为什么重写条件中的正则表达式似乎无法捕获?

时间:2013-10-11 12:27:34

标签: .htaccess mod-rewrite url-rewriting rewrite

我有以下网址:

mysite.com/eng?sentence=dog

我希望将它们重写为

mysite.com/eng/dog

所以我想用" /"

替换?sentence=

我尝试了以下所有方法:

RewriteCond %{THE_REQUEST} ^GET\ sentence= [NC]
RewriteRule ^ /%1 [NC,L,NE]

RewriteCond %{THE_REQUEST} ^GET\ \?sentence= [NC]
RewriteRule ^ /%1 [NC,L,NE]

RewriteCond %{THE_REQUEST} ^GET\ \?sentence=([^/?&\s]+) [NC]
RewriteRule ^ /%1 [NC,L,NE]

RewriteCond %{THE_REQUEST} ^GET\s/+\?sentence=([^/?&\s]+) [NC]
RewriteRule ^ /%1 [NC,L,NE]

然后我尝试访问网址:

mysite.com/eng?sentence=cat

但它保持不变。我假设我的正则表达式逻辑不正确,并且永远不会满足重写cond。我总是遇到正则表达式的麻烦。

1 个答案:

答案 0 :(得分:0)

您可以使用此规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(eng)\?sentence=([^\s&]+) [NC]
RewriteRule ^ /%1/%2/? [L,R]

这会将http://mysite.com/eng?sentence=dog重定向到http://mysite.com/eng/dog/