【问题标题】:Apache mod_rewrite .htaccess rules not matching - escaped charactersApache mod_rewrite .htaccess 规则不匹配 - 转义字符
【发布时间】:2012-03-21 20:57:34
【问题描述】:

我正在尝试做一些相对简单的 .htaccess 规则来 301 重定向一些 URL。规则不匹配。这是我所拥有的:

RewriteEngine On

RewriteBase /

# This works fine
RewriteCond %{QUERY_STRING}  ^id=2$ [NC]
RewriteRule ^products\.php$ /? [R=301,NE,NC,L]

# This doesn't match at all
RewriteRule ^products/-Smart-Smoker-\'Storm\'-White-Manual-Electronic-Cigarette-\(510\)\.html http://www.smartsmoker.co.uk/products/-Smart-Smoker-Storm-White-Manual-Electronic-Cigarette-%28510%29.html [NC,R=301]

# Neither does this
RewriteRule ^products/Christmas-Cracker-%252d-FREE-Shipping\.html$ http://www.smartsmoker.co.uk/categories/Electronic-Cigarette-Kits/Breeze-Mini-Electronic-Cigarette/ [L,R=301]

【问题讨论】:

    标签: apache .htaccess mod-rewrite http-status-code-301


    【解决方案1】:

    重写戏剧时最好的选择是将其分解为最短的功能匹配,然后对其进行扩展,注意上述条件可能会影响您想要实际测试的内容。话虽如此,使用下面的最小示例我自己看不到任何问题:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^products/-Smart-Smoker-\'Storm\'-White-Manual-Electronic-Cigarette-\(510\)\.html$ /test.html [L]
    

    您重定向到的 URL 也不必进行 URL 编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多