0

私はこれを持っています

RewriteRule ^(.*) public/$1    [NC,L]

私の .htacces ファイルで、Internal Server Error 500 が表示されます。

そして、なぜそれが得られるのかを説明してください。

4

1 に答える 1

1

Apache がある時点で中断しなければならない無限の書き換えループを作成するような方法でルールを作成したため、500 内部サーバー エラーが発生しました。エラー ログを確認すると、正確なエラー メッセージが表示されます。

この[L]フラグは必ずしも「書き換えが完了した」という意味ではありません。単に「この繰り返しで書き換えが完了しました。最初からやり直す」という意味です。

読むと非常に便利: RewriteRule Last [L] フラグが機能しない?

問題を解決するには、条件を追加して、既に書き換えられたルールが何度も書き換えられないようにする必要があります。これらのルールは、あなたのために仕事をするはずです (考えられる解決策の 1 つです。すべては、実際のプロジェクトの設定方法によって異なります)。

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]

/public/このルールを使用すると、URL が既に書き換えられているか、すぐに始まる場合、追加の書き換えは発生しません。

于 2011-08-19T08:55:34.053 に答える