正则表达式在线正则表达式测试工具,但没有在mod重写

时间:2013-11-12 00:17:07

标签: regex apache .htaccess mod-rewrite

正则表达式对我来说是一个很新的东西,我在使用它们来重定向以下形式的链接时遇到了一些麻烦:

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]

2 个答案:

答案 0 :(得分:2)

查询字符串(?之后的所有内容)不是用于匹配RewriteRule指令模式的URI的一部分。您必须使用%{THE_REQUEST}或推荐的%{QUERY_STRING}变量,并且可以使用%符号对任何分组进行反向引用:

RewriteCond %{QUERY_STRING} ^label=([^&]+)$
RewriteRule ^url/search/aaa\.bbb$ /url/search.php?keyword=%1 [L,NC]

如果您确实想要重定向(例如,将浏览器发送到新网址以使其显示在位置栏中),那么您还需要包含RR=301(永久性)重写标志中的重定向:

[L,NC,R]

答案 1 :(得分:1)

你必须使用

RewriteCond %{THE_REQUEST}

如果你想解析/修改GET参数,因为RewriteRule不包含它们......

此外,您应该使用[NC,L,R=301]