2012-02-08 6 views
3

私のファイルの.php拡張子を取り除くために私のhtaccessファイルに以下を使用しています。それはうまく動作します。htaccess ErrorDocument 404とRewriteEngineが矛盾しています

しかし、私はまたErrorDocument 404 /index.phpを利用して、存在しないURLをホームページにリダイレクトしたいと考えています。 htaccessErrorDocument 404 /index.phpを単独で使用すると、リダイレクトが正常に機能します。また、以下の書き換えコードを使用すると、PHP拡張モジュールが正常に削除されます。しかし、私はこれらの両方が一緒に働くことを望みます。

たとえば、ユーザーが「www.domain.com/register」と入力すると、www.domain.com/register.phpに移動します。しかし、「www.domain.com/something」と入力してsomething.phpが存在しない場合は、index.phpにリダイレクトされます。私はこれらの両方のすべての順列を一緒に私のhtaccessで無駄にしようとしました。どんな助けもありがとう。

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

答えて

4

ないあなたが抱えている問題は、正確であるが、私はこれまで自分のルールを変更した場合、それは私のためにどのような作品を確認してください。

ErrorDocument 404 /index.php 

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

ので、代わりの要求がないかどうかをチェックします存在する実際のファイル/ディレクトリにアクセスするには、そのファイルの.phpバージョンが存在することを確認してください。

+2

これは '%{REQUEST_FILENAME} -f'ではなく'%{REQUEST_FILENAME} .php -f'のキーとなります。 +1 – anubhava

+0

恐ろしい!ありがとう、ジョンとanubhava。私はhtaccess newbですので、検索中に見つかった条件をまとめるだけです。それが指摘されて今、意味をなすが、決して私自身でそこにいただろう:)再びありがとう! – user1195985

関連する問題