1

現在、このコードを使用して、Apache Web サーバー上のファイルの .php 拡張子を削除しています。

Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d   
RewriteRule ^(.*)$ $1.php [L]

2 つの質問:

1: 誰かが存在しないページを要求すると、Web サーバーが 404 ではなく 500 エラーを返します。これを修正するにはどうすればよいですか?

2: 誰かが .php 拡張子を要求した場合、どうすれば 404 を強制できますか?

前もって感謝します。

4

3 に答える 3

1

mod_rewrite がリクエストを書き換えようとして無限ループに入り、最終的に終了するため、存在しないページの 500 エラーが発生しています。

次のようにルールを書き換えて、PHP 拡張子を持つファイルが実際に存在することを確認します。

Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

このRewriteCond %{REQUEST_FILENAME}.php -f行により、「file.php」が存在する場合にのみ書き換えが行われます。

于 2013-02-28T19:04:31.643 に答える
0

example.com/about-us.php から example.com/about-us.html に移動します

RewriteEngine on
RewriteRule ^(.*)\.html$ $1.php
于 2013-02-28T18:22:54.677 に答える
0

これは完全な答えではありません。

htaccess 機能を完全に理解していない場合は、RewriteEngine がどのように機能するかを説明しようとします。

Apache サーバーは、ブラウザから「本物ではない」URL を「受信」します。次に、.htaccess を読み取り、そのファイルからの情報を使用して、その「実際ではない」URL を、サーバー上の物理ファイルを指す「実際の」URL に変換します。

エラーの詳細は、常に apache (httpd) エラー ログに保存されます。あなたはそれを読む必要があります、そしてそれがあなたに何も言わないなら - ここに貼り付けてください - 私たちが助けます.

この場合、404 エラーを強制するのはお勧めできません。エラーを上書きするのではなく、修正する必要があります。

于 2013-02-28T18:51:20.987 に答える