0

拡張子が .php のファイルをリクエストすることは可能ですか。たとえば、http://example.com/about.phpユーザーは .php に移動する代わりに、.php と入力するだけで済みますhttp://example.com/about

次のことを試しましたが、404ページが表示されるだけです。

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

4

2 に答える 2

2

URL から .php を除外する必要があります。そうしないと、無限ループが発生し、この .php.php.php.php のような URL になる可能性があるためです。しかし、アイデアは良く、うまくいきます。

  1. URL から「.php」拡張子を削除するにはどうすればよいですか?
于 2012-06-28T09:16:10.203 に答える
1

要求されたファイル (書き換え後) が存在する場合、ルールは機能するはずです。たとえば、ページ/phpinfoが要求され、ファイル/phpinfo.phpが存在します。ただし、ファイルが (書き換え後に) 存在しない場合、同じルールによって無限ループが作成されます。次に例を示します。

  • /phpinfoRewriteRule に一致し、両方の RewriteCond が満たされている場合、結果は次のようになります。/phpinfo.php
  • Lフラグは現在の反復を停止しますが、ファイル名が変更されているため、別の反復が必要です
  • /phpinfo.phpRewriteRule に一致し、両方の RewriteCond が満たされている場合、結果は次のようになります。/phpinfo.php.php
  • mod_rewrite があきらめるまで繰り返す

いくつかの回避策があります。最も簡単な方法は、次のように微調整することRewriteCondです。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*) $1.php [QSA,L]

単純な書き換えルールでも 404 エラーが継続的に発生する場合は、書き換えルールが Apache によって処理されていない可能性があります。サーバー構成ファイル ( ) でAllowOverrideが に設定されている可能性があります。に変更し、Apache を再起動します。Nonehttpd.confAllowOverride FileInfo

于 2012-06-28T11:46:12.330 に答える