2

「/test/が/test.phpになるように.php拡張子を削除するにはどうすればよいですか」などの質問がたくさんあることは知っていますが、ユーザーが直接test.phpにアクセスすると、拡張子は置き換えられません。だから私は.phpを/に置き換えたいと思っています。ここに私が使用している .htacces の一部があります:

RewriteEngine on

RewriteRule stuff\.php /other_stuff/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
4

1 に答える 1

3

URI (他のルールによって書き換えられる) ではなく、実際のリクエストに対してチェックを行う必要があります。変数は、書き換えエンジンの%{THE_REQUEST}過程で変更されません。RewriteEngineディレクティブのすぐ下に次のルールを追加してみてください。

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^/]+)\.php(\?|\ |$)
RewriteRule ^ /%2/ [L,R=301]
于 2013-03-20T10:06:07.337 に答える