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

あなたの:にRフラグを追加しますRewriteRule

RewriteRule ^search/([^/]+)/? search.php?term=$1 [NC,QSA,R=301]
于 2012-09-19T19:25:08.290 に答える
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 に答える