3

末尾のスラッシュの追加とは別に機能する mod_rewrite ルールで誰かが私を助けてくれることを願っています。

これがルールです

<IfModule rewrite_module>

Options Indexes FollowSymLinks +IncludesNOEXEC 
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mydomain\.org$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.org/$1 [L,R=301]

</IfModule>

目的は、URL mydomain.org を www.mydomain.org の形式に書き換えることです。

これは機能します。しかし、その後 www.mydomain.org// がブラウザーのアドレス バーに表示されます。書き換えログを確認すると、 // がルールによって明示的に作成されていることがわかります

質問は次のとおりです。

  1. 2 つのスラッシュは重要ですか (または可能性がありますか)。
  2. (1) の答えが「はい」の場合、末尾のスラッシュが省略されるようにルールをやり直すことはできますか?
4

2 に答える 2

1

ほとんどのサーバーは二重スラッシュを無視し、単一として扱います。たとえば、この質問を参照してください (ダブルスラッシュ) https://stackoverflow.com//questions/13027041

を修正するRewriteRuleには、に変更するだけでよいと思います

RewriteRule ^/?(.*)$ http://www.mydomain.org/$1 [L,R=301]

この/?部分はオプション (ルート アクセス) になり、見つかった場合はキャプチャされた(.*)セクションの一部ではないため削除されます。

于 2012-10-23T09:39:32.730 に答える
1
  1. いいえ、通常は 2 つのスラッシュは問題ではありません。ソフトウェアを混乱させることはありません。これは、1 バイト多く転送する必要があることを意味します (状況によってはこれが問題になる場合があります)。
  2. 書き換えルールを に変更するだけRewriteRule ^/?(.*)$ http://www.mydomain.org/$1 [L,R=301]です。それ/?がトリックです。
于 2012-10-23T09:40:39.057 に答える