1

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

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]
4

2 回答 2

2

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

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

如果您确实想要重定向(例如,将浏览器发送到新 URL,以便它出现在位置栏中),那么您还需要在重写标志中包含一个R或(永久重定向):R=301

[L,NC,R]
于 2013-11-12T01:59:34.717 回答
1

你必须使用

RewriteCond %{THE_REQUEST}

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

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

于 2013-11-12T00:33:04.987 回答