2

mod_rewrite を使用してファイル拡張子を非表示にしていますが、このコードは正常に機能していますが、URL の末尾にスラッシュを追加すると、エラー 500 内部サーバー エラーが表示されます

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

私を助けてください

4

1 に答える 1

1

しかし、URLの最後にスラッシュを追加すると、エラー500内部サーバーエラーが表示されます

これは、スラッシュが でグループ化され、(.*)によって参照されているためです。つまり、次$1のようなリクエストです。

http://your.host.com/my_file/

に書き換えられています:

http://your.host.com/my_file/.php

その理由は%{REQUEST_FILENAME}\.php、末尾のスラッシュが無視されるため、条件が存在するためです。RewriteRuleの正規表現に末尾のスラッシュとの一致を含めるだけです。

RewriteRule ^(.*?)/?$ $1.php
于 2012-08-15T18:13:54.847 に答える