提问人:Syntax Byte Solutions 提问时间:4/20/2022 最后编辑:Alicia SykesSyntax Byte Solutions 更新时间:4/20/2022 访问量:954
如何将用户重定向到基于 Laravel 中的国家/地区的目录 [已关闭]
How to redirect users to a directory based on Country in Laravel [closed]
问:
我希望来自不同国家/地区的用户被重定向到 Laravel 中的设置目录。
我尝试了根据此处看到的信息进行此 URL 重定向,使用:
RewriteCond %{ENV:IP2LOCATION_COUNTRY_SHORT} ^DE$
RewriteRule ^(.*)$ http://example.com/germany [L]
现在它不起作用。请问我该怎么做?
答:
2赞
Alicia Sykes
4/20/2022
#1
步骤#1 - 获取IP地址
第一步很简单
$_SERVER['REMOTE_ADDR']
实际上,这可能不是最准确的方法。但本线程对此进行了更详细的介绍
步骤#2 - 从IP获取区域
将 IP 与区域关联的唯一方法是使用第三方服务。例如,ipinfo.io。
$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
echo $details->region; // E.g. england.
步骤#3 - 重定向页面
最后,您可以使用上述结果重定向用户。
switch ($region) {
case 'england':
header("Location: https://somewhere/england",TRUE,301);
exit;
break;
case 'spain':
header("Location: https://somewhere/spain",TRUE,301);
exit;
break;
case 'germany':
header("Location: https://somewhere/germany",TRUE,301);
exit;
break;
default:
header("Location: https://somewhere/england",TRUE,301);
exit;
break;
}
}
评论
0赞
Syntax Byte Solutions
4/20/2022
请问我把这段代码放在Laravel项目中的什么位置
0赞
Alicia Sykes
4/20/2022
我不知道你的项目是什么样子的!您将需要分享更多信息。
0赞
Syntax Byte Solutions
4/20/2022
谢谢。我真的不知道该分享什么,但我的项目是纯粹的 Laravel 框架
0赞
Alicia Sykes
4/20/2022
你需要把这段代码放在你希望重定向发生的地方......我可以给你更详细的例子,如果你用更多的信息更新你的问题。如果我的回答对你有帮助,那么考虑接受它
1赞
Tim Lewis
4/20/2022
@SyntaxByteSolutions 如果这是一个Laravel项目,您将有一个与每个国家/地区关联的路由,例如这将更有意义,因为它可以检测您的IP并相应地重定向。请查看文档:laravel.com/docs/9.x/middlewareRoute::get('/{country}', ...);
评论