0

目前我有这个重写规则,它工作得很好:

RewriteRule ^search/([^/]+)/? search.php?term=$1 [NC,QSA]

当我去它时,mysite.com/search/foo它会将我带到正确的搜索页面foo。我想做的是做相反的工作,这样如果我访问mysite.com/search.php?term=foo我就会被带到mysite.com/search/foo。我想我需要在某个地方进行 301 重定向,但我不确定如何在不创建无限循环的情况下做到这一点,而且到目前为止我读过的其他帖子并没有太大帮助。

4

3 回答 3

2

尝试:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /search\.php\?term=([^&]+)
RewriteRule ^search\.php$ /search/%1/? [L,R=301]

或(如果您将这些放在您已经拥有的规则之后

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING} ^term=([^&]+)$
RewriteRule ^search\.php$ /search/%1/? [L,R=301]
于 2012-09-19T21:07:23.333 回答
0

试试这个:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+mysite.com/search.php?term=foo [NC]
RewriteRule ^ mysite.com/search/foo [L,R=301] 
于 2012-09-19T19:05:55.097 回答
0

R标志添加到您的RewriteRule

RewriteRule ^search/([^/]+)/? search.php?term=$1 [NC,QSA,R=301]
于 2012-09-19T19:25:08.290 回答