web-dev-qa-db-ja.com

ErrorDocument 404 /404.phpは、PHPの.htaccessファイルで動作していません

私は.htaccessファイルはルートディレクトリにあり、404.phpファイルもあります。私のコンテンツ.htaccessファイルは次のとおりです。

ErrorDocument 404 /404.php 

しかし、URLのつづりを間違えると、404.phpは開いていません。代わりに、次のメッセージが表示されます。

見つかりません

要求されたURL /mywebsite/ites.phpは、このサーバーで見つかりませんでした。

さらに、ErrorDocumentを使用して要求を処理しようとしたときに404 Not Foundエラーが発生しました。

しかし、私が試したときErrorDocument 404 google.com、 動いた。

21
user1556433

この回答に対するコメントを統合します。

設定するとき...

ErrorDocument 404 /404.php

/404.php pathは、htdocsフォルダーのルートへの絶対パスではなく、ファイルシステムのルートである場合があります。これは、設定に基づいて、たとえば/home/htdocs/または~ 等々。

したがって、絶対パスを見つけて、それに応じて設定する必要があります。

17
conceptdeluxe

あなたの404.php実際にあなたの.htaccessファイル?単純に直接URLとして実行できますか?ファイルはサーバーで読み取り可能ですか?または、ネストされたサブディレクトリにありますか?また、完全なURLを試すこともできます。

ErrorDocument 404 http://mygreat.server/404.php 

Apacheの公式ドキュメントはこちら に詳細があります。

15
JakeGould

次のように ErrorDocument を使用します。

ErrorDocument <3-digit-code> <action>

入力した内容によってトリガーされる3種類のアクションがあります。

アクションは次のように扱われます。

  1. アクションが「/」で始まる場合にリダイレクトするローカルURL。
  2. アクションが有効なURLである場合にリダイレクトする外部URL。
  3. 表示されるテキスト(上記のいずれでもない場合)。 (テキストが複数のWordで構成されている場合は、テキストを引用符( ")で囲む必要があります。)

例えば。

カスタムテキストErrorDocument 404 "Oops! We can't find that pesky file. Sorry."

ローカルパスErrorDocument 404 /local/path/to/404.php

外部URLErrorDocument 404 http://external_url.example.com/server_error.html

ローカルファイルを選択しましたが、おそらくサーバーの観点からは正しくリンクされていません。ローカルサーバーパスはURLに表示されるものではなく、多くの場合~/htdocs/www/domainname/

問題は、おそらく404.phpは間違っており、サーバーで見つけることができません。

1
Chuck Le Butt

ちょっとhttpd.confのいくつかの設定を変更できます:-

<Directory />
AllowOverride none
Require all denied
</Directory>

に:-

<Directory />
AllowOverride All
Require all denied
</Directory>

使用できます

ErrorDocument 404 /404.php

Htaccessで

0
Aryan Kumar