0

私の書き換えルールはほとんど機能しますが、まだいくつかの問題があります。コードは次のとおりです。

RewriteEngine on
RewriteRule ^tag/(.*)$ /?s=$1&search=GA [L,R=301]

最初の問題は、リダイレクトが次の場所にリンクしていることです。

mydomain.com/?s=tag/&search=GA

2番目のスラッシュを取り除くにはどうすればよいですか?

次に、2番目の問題...タグに複数の単語が含まれている場合(タグのマーケティングのヒントなど)、リダイレクトは次のようになります。

mydomain.com/?s=marketing-tips/&search=GA

その-記号を+記号に変換するにはどうすればよいですか?

4

2 に答える 2

1

これを試して:

# getting rid of trailing slash:
RewriteRule ^tag/(.*?)/?$ /?s=$1&search=GA [L]

# change "-" with "+":
RewriteCond %{QUERY_STRING} ^s=([^&]+)-([^&]+)&(.*)
RewriteRule ^(.*)$ /$1?s=%1+%2&%3 [L,NE]

# if there's no more "-", redirect:
RewriteCond %{QUERY_STRING} ^s=([^&-]+)(&|$)
RewriteRule ^(.*)$ /$1 [L,R=301]

のような URL にアクセスすると、次のようmydomain.com/tag/some-thing-else-lots-of-dashes/にリダイレクトされます。mydomain.com/s=some+thing+else+lots+of+dashes&search=GA

于 2012-09-20T15:57:06.200 に答える
0

あなたの正規表現は、コレクション内の受信 URL からスラッシュを取得しているようです。それを移動してオプションにしてみてください。また、セレクターの貪欲さを減らしました:

RewriteRule ^tag/(.*?)/?$ /?s=$1&search=GA [L,R=301]
于 2012-09-20T13:13:52.157 に答える