Htaccess Regex - 重定向具有加号和百分号字符的网址

时间:2012-11-21 04:45:28

标签: regex apache .htaccess http redirect

当URL包含+或%字符时,我想将该URL重定向到我编写的php重定向脚本。正则表达式(。+)(?:+ |%)(。*)?工作并找到包含+或%的任何URL,但在htaccess中使用它时不会起作用,如 -

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} (.+)(?:\+|%)(.+)?
RewriteRule ^(.*)$ /directory/content/my-redirect-rewrite.php [L]

我做错了什么?谢谢你看看。

1 个答案:

答案 0 :(得分:2)

由于你没有使用RewriteCond捕获组,所以不需要?:并且也不需要(。+)组。试试这个,如果你不想让它真正改变浏览器中显示的网址,请删除R=302

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} (\+|\%)
RewriteRule ^(.*)$ /directory/content/my-redirect-rewrite.php [R=302,NC,L]