使用Mod_Rewrite&的IP地理位置PHP

时间:2014-01-08 11:52:20

标签: php apache .htaccess mod-rewrite redirect

我正在编写一个小脚本,重定向到国家/地区特定的着陆页(例如:如果您来自德国,您将被重定向到xyz.com/de/)此重定向使用index.php连接到Web service返回用户访问网站的国家/地区然后我使用301将用户重定向到新页面xyz.com/de/

我有两个问题

1-可以将相同的功能与mod_rewrite集成,如果是这样,在性能和SEO质量方面有什么优势?

2- mod_rewrite可以在重定向上保存包含GCLID的查询字符串(因为我将$_SERVER连接到php重定向

3 个答案:

答案 0 :(得分:2)

您可以在服务器上安装mod_geoip,这样可以直接在Apache中启用基于数据库的地理位置查找。查看您所谈论的场景的示例。

优势将是更好的性能,因为查找将使用数据库在本地完成,而不需要调用外部Web服务。一旦设置,它几乎不需要代码,从而简化了维护。您只需要确保定期更新查找数据库的本地副本,通常是每周/每日的cron作业。

您可以以任何想要附加所需参数的方式重写URL。

SEO-wise它与基于PHP的重定向相比应该没有任何影响,因为对于客户端,行为看起来完全相同。

答案 1 :(得分:0)

  1. mod_rewrite无法进行地理定位,也无法连接到外部服务

  2. 如果您的PHP代码正在进行301重定向,那么您需要在PHP代码中保留查询字符串。如果你有一个执行301重定向的htaccess规则,那么查询字符串应该通过重定向传递。

  3. The documentation州:

    修改查询字符串

    默认情况下,查询字符串将保持不变。 [...]如果要删除现有查询字符串,请仅使用问号结束替换字符串。要组合新旧查询字符串,请使用[QSA]标志。

答案 2 :(得分:0)

回答问题1。

如果安装了mod_geoip / mod_geoip2,则可以在vhost Apache配置中执行Geo IP方向。

如果安装了mod_geoip / mod_geoip2,你也可以使用mod_rewrite。

回答问题2。

你可以使用mod_rewrite将现有的查询字符串保留在重写的url上,这里有一些例子here