【问题标题】:htaccess redirect with dynamic variables conflicthtaccess 重定向与动态变量冲突
【发布时间】:2011-03-22 23:42:44
【问题描述】:

我在一个旧的 CMS 中工作,它使用 htaccess 将带有 GET 变量的 URI 重写为更用户友好的东西。

RewriteEngine on
RewriteRule ^animals/(.*)/ secondary.php?page=$1
RewriteRule ^animals/(.*) secondary.php?page=$1

结果(正确)

http://www.example.com/animals/duck

问题是我现在需要将其中一些页面重定向到新页面。我试过了:

Redirect 301 /animals/goose http://www.example.com/animals/fowl

重定向几乎可以工作,但它在重写的 URI 的末尾添加了“?page=goose”:

http://www.example.com/animals/fowl?page=goose

我尝试过使用 RewriteRule 和 RewriteCond,但不幸的是我没有运气。任何帮助将不胜感激。

【问题讨论】:

    标签: .htaccess dynamic redirect rewrite var


    【解决方案1】:

    尝试将它放在其他规则之前,而不是 Redirect 语句。 R=301 用于重定向,L 表示有问题的规则是要处理的最后一条规则。

    RewriteRule ^animals/goose /animals/fowl [R=301,L]
    

    您还可以使用问号轻松地使斜线(就像任何其他字符一样)可选,而不是使用两个规则。

    RewriteRule ^animals/(.*)/?$ secondary.php?page=$1
    

    【讨论】:

    • 感谢您的快速回复。我想我一次改变了太多东西。我将规则放在文件的顶部似乎已经解决了我的问题。非常感谢。
    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多