2017-10-31 2 views
0

特定のパターンに一致するファイルをサブディレクトリから提供したいが、私のルールは無限のリダイレクトループを引き起こす。この例では、私は新しいパスからGoogleサイトの検証ファイルを提供します:なぜルールの結果が無限ループになるのですか?

RewriteRule ^(google.*html)$ /google_site_verification/$1 [L] 

私のエラーログによれば、これはパスに/google_site_verificationを追加し続ける内部リダイレクトループになります。私はまた試みた:

RewriteCond %{REQUEST_URI} ^/google.*html$ 
RewriteRule ^(.*)$ /google_site_verification/$1 [L] 

これは同じ結果を与えます。私の正規表現はパターンの開始と終了を明示的に定義しているので、/google_site_verification/googleabcd1234.htmlはなぜ一致しますか?作品私が試した唯一のものは、チェーンに

RewriteCond %{REQUEST_FILENAME} !-f 

を追加しているが、私は仕事をするもののために存在しないファイルに依存する必要はありません。

答えて

2

あなたが使用することができます。

/グーグルを:

RewriteRule ^(google[^/]*\.html)$ /google_site_verification/$1 [L] 

あなたの問題は、両方のURLが一致していることです。 html
/google _site_verification/google html

+1

私は今見ます - それは親ディレクトリと一致しています。 googleという単語も含まれています。 – billynoah

関連する問題