.htaccess RewriteRule包含特殊字符

时间:2013-06-23 00:01:06

标签: apache mod-rewrite

我正在尝试使这个RewriteRule工作,虽然它不是出于某种奇怪的原因。我认为这可能是正在搞砸的%迹象:

http://site.com/c%content_cc%/more-stuff/in/here

RewriteEngine  on
RewriteRule ^c%content_cc%/(.*)$ ccontent_cc/$1 [L]

我正在尝试将其重写为: http://site.com/ccontent_cc/more-stuff/in/here

当我使用这个工具并输入我的规则时,它会回来说它应该正确重写。

http://htaccess.madewithlove.be/

1 个答案:

答案 0 :(得分:0)

问题是,浏览器会在URL encoding中经常看到%登录网址。您可以将%个字符括在括号中,并按字面意思对它们进行处理。在这里,我们将从REQUEST_URI

中提取它们
RewriteEngine  on
RewriteCond %{REQUEST_URI} ^/c[%]content_cc[%]/(.*)$
RewriteRule ^.* ccontent_cc/%1 [L]

如果这是重定向,则应使用R标志:

RewriteEngine  on
RewriteCond %{REQUEST_URI} ^/c[%]content_cc[%]/(.*)$
RewriteRule ^.* ccontent_cc/%1 [R,L]

如果是永久重定向,则应使用R=301

RewriteEngine  on
RewriteCond %{REQUEST_URI} ^/c[%]content_cc[%]/(.*)$
RewriteRule ^.* ccontent_cc/%1 [R=301,L]