【问题标题】:htaccess issue with adding variables to the URL将变量添加到 URL 的 htaccess 问题
【发布时间】:2013-10-24 05:08:16
【问题描述】:

我在使用 htacess 时遇到了一些问题。 我需要重定向几个页面,但似乎规则冲突。

我有:

RewriteRule ^doors/([^/\.]+)/([^/\.]+)/?$ products.php?c=$1&p=$2 [L]

作为一项规则,我有:

Redirect 301 /doors/door-frames-and-mouldings/hardwood-door-frames---exterior  http://www.domain.co.uk/doors/door-frames-and-mouldings&sub=hardwood-door-frames

我遇到的问题是它正在重定向到 URL:http://www.domain.co.uk/doors/door-frames-and-mouldings&sub=hardwood-door-frames?c=door-frames-and-mouldings&p=hardwood-door-frames---exterior - 所以它只是将旧变量附加到新 URL 中。有没有办法阻止这种情况? 提前致谢。

【问题讨论】:

    标签: php .htaccess mod-rewrite redirect


    【解决方案1】:

    不要混合使用 mod_rewrite 和 mod_alias 规则。仅通过 mod_rewrite 规则执行。

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^doors/([^/.]+)/([^/.]+)/?$ products.php?c=$1&p=$2 [L,QSA]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^doors/door-frames-and-mouldings/hardwood-door-frames---exterior http://www.domain.co.uk/doors/door-frames-and-mouldings&sub=hardwood-door-frames? [L,R=301,NC]
    

    【讨论】:

    • 谢谢阿努巴瓦。我可以验证在第一个 RewriteRule 中应该是 ([^/.]+) 而不是 ([^/\.]+) 吗?
    • 我使用了([^/.]+),因为点不需要在字符类中转义。 ([^/.]+) 表示匹配除 /. 之外的任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多