0

タイトルが悪いのでごめんなさい。私は今使っています

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

使用すると正常に動作localhost/home しますが、入力時に問題が発生します。入力時に、要求されたページが存在しないエラーページlocalhost/home.phpにリダイレクトしたいと思います。localhost/home.php

.htaccessでそれを行うにはどうすればよいですか、それともphpを使用してリダイレクトする必要がありますか?

4

2 に答える 2

1

拡張子が「.php」のURLをリクエストすると、.htaccess条件が満たされないため、サーバー(Apache)がリクエストを正常に処理します。それが機能する理由です。

私の意見では、前のルールのに別のルールを追加するのが最も簡単です。

RewriteCond %{REQUEST_URI} \.php$ # if it ends in .php
# note we're using REQUEST_URI above to only match when
# the URI ends in .php, not the requested file,
# otherwise we would have a endless loop!
RewriteRule ^(.*)$ /error_page.php # note the leading slash

ブラウザをリダイレクトする場合(フルパスを追加する必要があると思います)に[R]オプションを追加します。例:RedirectRule

RewriteRule ^(.*)$ /path/error_page.php [R]
于 2012-12-02T14:34:07.360 に答える
1

ディレクトリでない場合はREQUEST_FILENAMEに「.php」を追加し、ディレクトリに「.php」を追加すると既存のページになります。入力localhost/home.phpしても、が見つからないため、書き換えは実行されませんlocalhost/home.php.php。したがって、この2番目のシナリオでは、書き換えはまったく関係ありません。おそらく、404の状況に対する通常の処理が正しく設定されているかどうかを確認する必要があります。たとえば、ErrorDocumentディレクティブが構成されていますか?次に、条件を削除して、もちろん失敗する-fリダイレクトを許可することを検討してください。home.php.php

于 2012-12-02T14:42:32.763 に答える