如何将用户重定向到基于 Laravel 中的国家/地区的目录 [已关闭]

How to redirect users to a directory based on Country in Laravel [closed]

提问人:Syntax Byte Solutions 提问时间:4/20/2022 最后编辑:Alicia SykesSyntax Byte Solutions 更新时间:4/20/2022 访问量:954

问:


想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。

去年关闭。

我希望来自不同国家/地区的用户被重定向到 Laravel 中的设置目录。

我尝试了根据此处看到的信息进行此 URL 重定向,使用:

RewriteCond %{ENV:IP2LOCATION_COUNTRY_SHORT} ^DE$
RewriteRule ^(.*)$ http://example.com/germany [L]

现在它不起作用。请问我该怎么做?

php laravel location ip-geolocation

评论

0赞 Alicia Sykes 4/20/2022
到目前为止,您尝试过什么?
0赞 Alicia Sykes 4/20/2022
这个问题被标记为 JavaScript 和 PHP,它是客户端还是服务器端?你应该分享你的代码片段,显示你尝试过的内容和无效的内容。
0赞 RiggsFolly 4/20/2022
我们真的需要更多的信息,以便能够给出一个明智的选择
0赞 RiggsFolly 4/20/2022
请把额外的信息放到我们可以实际阅读的问题中
0赞 Syntax Byte Solutions 4/20/2022
@RiggsFolly 我只是问我如何根据访问者的国家/地区将访问者重定向到目录!

答:

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}', ...);