正则表达式为.htaccess中的url编码字符串

时间:2013-06-11 09:16:13

标签: regex .htaccess urlencode

我必须为一个站点(不同的langs)的地址,我需要一个保存查询字符串的重定向。所以我需要抓住这个

http://www.example1.kereell.com/wp-login.php?action=logout&redirect_to=http%253A%252F%252Fwww.example2.kereell.com%252Fafiliados-de-la-zona%252F&_wpnonce=66909cdca0

并重定向到

http://www.example2.kereell.com/wp-login.php?action=logout&redirect_to=http%253A%252F%252Fwww.example2.kereell.com%252Fafiliados-de-la-zona%252F&_wpnonce=66909cdca0

在.htaccess文件中它应该是这样的

RewriteCond %{HTTP_HOST} ^.*example1\.kereell\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/wp-login.php?action=logout&redirect_to=http%3A%2F%2Fwww.example2.kereell.com%2Fafiliados-de-la-zona%2F&_wpnonce=66909cdca0$ [NC]
RewriteRule ^(.*)$ http://www.example2.kereell.com/$1 [R=301,L] 

我尝试了很多东西(逃避“%”,正则表达式类)但由于urlencoded字符而无法使其工作。如果我替换所有urlencoded符号 - 它工作..

1 个答案:

答案 0 :(得分:0)

所以解决方案非常简单,因为它假设是:

RewriteCond %{HTTP_HOST} ^.*example1\.kereell\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/wp-login.php$ [NC]
RewriteCond %{QUERY_STRING} ^action=logout&redirect_to=http[\%A-Z0-9]*www.example2.kereell.com(.*)$ [NC]
RewriteRule ^(.*)$ http://www.example2.kereell.com/$1 [R=301,L]

感谢Qtax关注QUERY_STRING!