0

http://example.com/のみにリダイレクトしたいのですがhttp://example.com/main/、どうすればよいですか?

これが私が今していることです:

RewriteEngine On
RewriteBase /

RewriteRule ^$ main/ [R=301,L]

問題は、クエリ文字列もリダイレクトしていることです。例:http://example.com/?channel=scienceにリダイレクトされていhttp://example.com/main/?channel=scienceます。

有効な/指定された空でない (つまり、値が指定されている) クエリ文字列だけをリダイレクトしたくありません。例えば:

http://example.com/?channel

同様にリダイレクトする必要があります。どうすればいいですか?

4

1 に答える 1

1

RewriteBaseとの間に (1 つ以上の) RewriteCond を使用RewriteRuleして、クエリ文字列が必要なものと一致する (または ! と一致しない) 場合にのみ書き換えを強制することができます。

catこれは、クエリ文字列が一致するか、または一致するリクエストのみをリダイレクトしますchannel

RewriteCond %{QUERY_STRING} ^(.*)(channel|cat)(.*)$

条件の 1 つが必要な場合は複数のRewriteCond を[OR]フラグと組み合わせて使用​​することも、すべての条件を同時に真にする必要がある場合は [OR] フラグを使用しないこともできます。例えば

RewriteCond %{QUERY_STRING} ^(.*)(channel)(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(cat)(.*)$

また、リダイレクトされたページからクエリ文字列を削除する場合は、次?のようにリダイレクト URL の末尾に a を追加します。

RewriteRule ^$ main/? [R=301,L]
于 2013-11-05T16:43:12.453 に答える