正则表达式对我来说是一个很新的东西,我在使用它们来重定向以下形式的链接时遇到了一些麻烦:
url/search/aaa.bbb?label=dasdsf32r%20sdFa
类似于:
url/search.php?keyword=dasdsf32r%20sdFa
我的正则表达式适用于:http://www.myregextester.com/例如,但是当我将它放在我的.htaccess文件中时,重定向不起作用:
RewriteRule ^url/search/aaa\.bbb\?label=([^\t\r\n\v\f]+)$ url/search.php?keyword=$1 [NC,L,END]
答案 0 :(得分:2)
查询字符串(?
之后的所有内容)不是用于匹配RewriteRule
指令模式的URI的一部分。您必须使用%{THE_REQUEST}
或推荐的%{QUERY_STRING}
变量,并且可以使用%
符号对任何分组进行反向引用:
RewriteCond %{QUERY_STRING} ^label=([^&]+)$
RewriteRule ^url/search/aaa\.bbb$ /url/search.php?keyword=%1 [L,NC]
如果您确实想要重定向(例如,将浏览器发送到新网址以使其显示在位置栏中),那么您还需要包含R
或R=301
(永久性)重写标志中的重定向:
[L,NC,R]
答案 1 :(得分:1)
你必须使用
RewriteCond %{THE_REQUEST}
如果你想解析/修改GET
参数,因为RewriteRule
不包含它们......
此外,您应该使用[NC,L,R=301]
。