目前我已经制定了这条重写规则,效果很好:
RewriteRule ^search/([^/]+)/? search.php?term=$1 [NC,QSA]
当我转到mysite.com/search/foo
时,它会转到foo
的正确搜索页面。我要做的就是做相反的工作,这样如果我访问mysite.com/search.php?term=foo
,我将被带到mysite.com/search/foo
。我想我需要在某个地方进行301重定向,但我不确定如何在不创建无限循环的情况下执行此操作,到目前为止我读过的其他帖子都没有太多帮助。
答案 0 :(得分: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]
答案 1 :(得分:0)
试试这个:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+mysite.com/search.php?term=foo [NC]
RewriteRule ^ mysite.com/search/foo [L,R=301]
答案 2 :(得分:0)
将R
标记添加到RewriteRule
:
RewriteRule ^search/([^/]+)/? search.php?term=$1 [NC,QSA,R=301]