mod_rewrite を使用してファイル拡張子を非表示にしていますが、このコードは正常に機能していますが、URL の末尾にスラッシュを追加すると、エラー 500 内部サーバー エラーが表示されます
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
私を助けてください
mod_rewrite を使用してファイル拡張子を非表示にしていますが、このコードは正常に機能していますが、URL の末尾にスラッシュを追加すると、エラー 500 内部サーバー エラーが表示されます
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
私を助けてください
しかし、URLの最後にスラッシュを追加すると、エラー500内部サーバーエラーが表示されます
これは、スラッシュが でグループ化され、(.*)
によって参照されているためです。つまり、次$1
のようなリクエストです。
http://your.host.com/my_file/
に書き換えられています:
http://your.host.com/my_file/.php
その理由は%{REQUEST_FILENAME}\.php
、末尾のスラッシュが無視されるため、条件が存在するためです。RewriteRule
の正規表現に末尾のスラッシュとの一致を含めるだけです。
RewriteRule ^(.*?)/?$ $1.php