0

htaccessファイルにこれがあります

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

これにより、人々はそのままアクセスできるようになりますserver/login.phpが、アドレスバーに が入力された場合に にリダイレクトされるようにするにはserver/loginどうすればよいでしょうか。server/login.phpserver/login

この問題が原因で、私のサイトは 1 つの URL だけでなく、さまざまなヒットを取得しています。ご尽力いただき、ありがとうございます。

4

2 に答える 2

1

これは、外部リダイレクトで行うことができます。

RewriteRule ^(.*)\.php$ $1 [R,L]

R フラグは一時的なリダイレクトです。期待どおりに動作する場合は、R=301 を使用して永続的なリダイレクトにすることができます。詳細については、ドキュメントを参照してください。

編集:現在のルールでは、これにより無限ループが作成されます。Apache 2.3.9 以降を実行している場合は、内部書き換えルールで END フラグを使用します。そのようなバージョンの Apache を使用したくない、または使用できない場合は、"THE_REQUEST" トリックを使用して無限ループを停止できます。これは、リクエストが外部から来た場合にのみ一致します。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)\.php[\s\?] [NC]
RewriteRule ^ %1 [R,QSA,L]
于 2013-08-03T12:44:07.227 に答える