【问题标题】:Cakephp redirect 301 from old urls with queryCakephp 通过查询从旧网址重定向 301
【发布时间】:2013-10-02 22:56:00
【问题描述】:

我正在尝试将旧 URL(例如 http://www.mysite.com/index.php?option=com_content&view=article&id=1)重定向到 cakephp2 /about。 我的 .htaccess 在顶部有一个 mod_rewrite 减速。 我在 .htaccess 中尝试了几个选项,例如:

 RewriteRule ^/index.php?option=com_content&view=article&id=1  http://www.mysite.com/about     [R=301,L]

什么是正确的语法? 我使用哪个 .htaccess 是否重要,无论是顶层还是 app/webroot 中的那个。 谢谢 奥利

【问题讨论】:

    标签: .htaccess cakephp mod-rewrite redirect


    【解决方案1】:

    您的RewriteRule 不正确,因为前导/.htaccess 中不匹配,并且查询字符串也不匹配。

    您可以使用以下规则:

    RewriteCond %{QUERY_STRING} (^|&)option=com_content&view=article&id=1(&|$)
    RewriteRule ^index\.php$ http://www.mysite.com/about? [R=301,L]
    

    QUERY_STRING 会自动转移到新 URL,因此新 URL 将变为:http://www.mysite.com/about?option=com_content&view=article&id=1

    【讨论】:

    • 我已经添加了这些行,这是我得到的新 URL:mysite.com/about?/about&/about&/about& 并且它继续使用 /about&/
    • 抱歉,我在目标 URL 中遗漏了 ?。立即检查编辑。
    【解决方案2】:

    无论您的服务器指向您的 Web 根目录,您都希望将规则添加到该目录的 .htaccess 文件中。 CakePHP 的 RewriteRule 非常贪心,所以你想要么在 CakePHP 的上方添加你的 RewriteRules;或将 Redirect 301 规则添加到 .htaccess 文件的底部。我倾向于以这种方式将我的RewriteRules 与我的Redirects 分开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 2014-05-28
      • 2013-03-30
      • 2013-10-16
      • 1970-01-01
      相关资源
      最近更新 更多