5

.htaccess ファイルに、.php ファイル拡張子を不要にする書き換え条件があります。

RewriteEngine On
RewriteRule ^([^.]+)$ $1.php

だからhttp://site.com/blogが開きますhttp://site.com/blog.php

ただし、古いユーザーが /blog.php と入力すると、ページも読み込まれます

.php またはその他のファイル拡張子を持つページを防止またはリダイレクトする方法はありますか?

つまり、ユーザーが /blog.php または /blog.asp を入力した場合、ロードに失敗するか、/blog にリダイレクトされます (拡張なし)。

4

4 に答える 4

4

.phpこれを達成するためのより良い方法は、その名前の が存在する場合にのみ書き直すことです。404それ以外の場合は、元の URL をスローします。2 番目のルール セットは、拡張子を削除し、リダイレクト ループを回避します。

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteCond %{THE_REQUEST} ^(?:GET|POST)\ /.*\.php\ HTTP.*$ [NC]
RewriteRule ^(.*)\.php$ $1 [R=301,L]
于 2013-10-26T12:57:19.203 に答える
1
RewriteEngine On
RewriteRule ^([^.]+)$ $1.php [L]
RewriteRule ^(.*?)\.php$ $1 [R=301,L]
于 2013-10-26T12:41:03.480 に答える
0

ルールを使用できます

RewriteRule ^(.+)\.php$ $1 [R=301,L]

これにより、apache がブラウザにリダイレクトを送り返し、ブラウザの URL が拡張機能から削除されたものに更新されます。ただし、内部で .php にリダイレクトするルールの前にこのルールを配置してください。

于 2013-10-26T12:41:59.647 に答える
0

これを試して:

RewriteRule ^(.*?)\.([a-z0-9]+)$ $1 [R=301,L]
于 2013-10-26T12:44:13.013 に答える