【问题标题】:IP Geo location with Mod_Rewrite & PHP带有 Mod_Rewrite 和 PHP 的 IP 地理位置
【发布时间】:2014-01-26 12:11:36
【问题描述】:

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

我有两个问题

1- 是否可以与mod_rewrite 集成相同的功能,如果可以,在性能和搜索引擎优化质量方面有什么优势?

2- mod_rewrite 能否在重定向中保存包括GCLID 在内的查询字符串(因为我将$_SERVER 连接到php 重定向

【问题讨论】:

    标签: php apache .htaccess mod-rewrite redirect


    【解决方案1】:

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

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

    您可以以任何方式重写 URL,添加任何您想要的参数。

    在 SEO 方面,与基于 PHP 的重定向相比,它应该没有任何影响,因为对于客户端来说,行为看起来完全一样。

    【讨论】:

      【解决方案2】:
      1. mod_rewrite 无法进行地理定位,也无法连接到外部服务

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

      The documentation 状态:

      修改查询字符串

      默认情况下,查询字符串会原封不动地传递。 [...] 当您想删除现有的查询字符串时,只用问号结束替换字符串。要组合新旧查询字符串,请使用 [QSA] 标志。

      【讨论】:

      • mod_rewrite 本身不能,但 mod_geoip(我认为其他的)可以,这使您可以直接使用 mod_rewrite 进行基于地理位置的重定向。
      【解决方案3】:

      回答问题 1。

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

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

      回答问题 2。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-07
        • 1970-01-01
        • 2011-04-06
        • 1970-01-01
        • 2017-06-12
        • 2019-04-11
        • 1970-01-01
        相关资源
        最近更新 更多