web-dev-qa-db-ja.com

htaccessの書き換えでLimitInternalRecursionエラーが発生する

次のコードの.htaccessファイルがあります

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ http://%{HTTP_Host}/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

しかし、自分のサイトにアクセスすると、このエラーが発生します

[client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

LogLevelデバッグではバックトレースが得られないため、内部再帰の制限を増やすことは賢明ではないと思います。

誰かがこのタイプのエラーの経験がありますか?

1
alrightythen

リクエストが/index.htmlに対するものであると想定します。

最初の書き換え条件は、「要求されたURLがディレクトリでない場合は、スラッシュを追加してそれ自体へのリダイレクトを使用して書き換えます」と述べています。したがって、URLは/index.html/へのリダイレクトで書き換えられます。これもまた、スラッシュなどを無限に追加して書き直されます。これがエラーメッセージが表示される理由です。

2
Jenny D

将来の人々がこれに遭遇した場合に備えて...

同様の問題が発生しました。私のLaravel 5.1プロジェクトでは、ブラウザーで500エラーが発生し、ログファイルでRequest exceeded the limit of 10 internal redirects due to probable configuration errorが発生していました。

RewriteBase /ファイルのRewriteEngine Onの直後に.htaccessを追加することで解決できました。

うまくいけば、これは誰かを助けることができます。

2
Brendan White