要求されたファイル (書き換え後) が存在する場合、ルールは機能するはずです。たとえば、ページ/phpinfo
が要求され、ファイル/phpinfo.php
が存在します。ただし、ファイルが (書き換え後に) 存在しない場合、同じルールによって無限ループが作成されます。次に例を示します。
/phpinfo
RewriteRule に一致し、両方の RewriteCond が満たされている場合、結果は次のようになります。/phpinfo.php
L
フラグは現在の反復を停止しますが、ファイル名が変更されているため、別の反復が必要です
/phpinfo.php
RewriteRule に一致し、両方の RewriteCond が満たされている場合、結果は次のようになります。/phpinfo.php.php
- mod_rewrite があきらめるまで繰り返す
いくつかの回避策があります。最も簡単な方法は、次のように微調整することRewriteCond
です。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*) $1.php [QSA,L]
単純な書き換えルールでも 404 エラーが継続的に発生する場合は、書き換えルールが Apache によって処理されていない可能性があります。サーバー構成ファイル ( ) でAllowOverride
が に設定されている可能性があります。に変更し、Apache を再起動します。None
httpd.conf
AllowOverride FileInfo