0

.htaccessで301リダイレクトを設定して、誰かがスラッシュなしでリンクしている場合に、スラッシュをドキュメントルートに追加するにはどうすればよいですか?

私が行った調査によると、ほとんどの検索エンジンは、次のURLを2つの異なるURLと見なしています。

mydomain.com(スラッシュなし)

mydomain.com/(スラッシュ)

私はこれを試しました(そして他の多くのもの):

RewriteRule ^ $ http://www.mydomain.com/ [R = 301、L]

それはそれをループに投げ込み、ページを何度もロードします。

4

2 に答える 2

0

私はあなたがあなたの研究から間違った結論を引き出したと思います。HTTPの場合、スラッシュなしのRoot-URLは、スラッシュと等しくなるように指定されます。

絶対パスを空にすることはできないことに注意してください。元のURIに何も存在しない場合は、「/」(サーバールート)として指定する必要があります。[RFC2616セクション5.1.2]

したがって、元のURLがスラッシュで終わらないドメイン名のみである場合(つまり、絶対パスが空になる場合)、そのURLはスラッシュで拡張されます。何もする必要はありません。

問題について:mod_rewriteの微妙な点により、最初のスラッシュが省略されているため、RewriteRuleはルートURLをキャプチャし、リクエスターをリダイレクトループで送信しました。

于 2009-12-20T19:22:45.810 に答える
0

あなたはそのようなことを試すことができます

/なしでドメインと一致していることを確認し、一致していない場合はリダイレクトを実行します。

RewriteCond %{HTTP_HOST} ^mydomain\.com$ 
RewriteRule ^(.*)$ http://mydomain.com/$1 [L,R=301]
于 2009-12-20T19:23:40.600 に答える