2011-07-04 14 views
0

URLが間違っていると、長い間、ユーザーを直接ホームページにリダイレクトしています。 404エラーを返す代わりに、スクリプトでheader('location: /'); die();を使用しました。404リダイレクトとApacheとPHPの問題

私はその行をheader("HTTP/1.0 404 Not Found");die();に変更し、サーバーが404エラーメッセージを送信し始めました。

しかし、ブラウザ404のエラーは表示され、カスタム404のページは表示されません。 は、私は.htaccessファイルを開いて、

ErrorDocument 404 /index.php 

しかし、誰成功を追加しましたので、私はまだ私の404ページ ブラウザ404ページを取得していないよ(私はまたの/ etcの下でそれを設定しようとしました/ apache2の/サイト利用可能/サイト-confの)も試してみました

:まだ

$_SERVER['REDIRECT_STATUS'] = 404; 
    header("HTTP/1.1 404 Not Found"); 
header('location: /'); 
    die(); 

そして - ノー成功

任意のアイデア?

+0

どのブラウザをお使いですか? IEのように聞こえる。 –

+0

IE?いいえ、それはUbuntuのChromeでした。しかし、ブラウザの問題ではなく、wgetを使用しているときに同じ応答を得ました。 – TwoDiv

+0

一部のブラウザは、サーバーからのメッセージ/ページが1024バイト未満の場合、独自のメッセージを表示します。 –

答えて

1

header("HTTP/1.1 404 Not Found");
include('index.php'); // maybe you have to adjust the path;
exit;

もしヘッダ(場所)を使用するときは、3XXにステータスを設定しています。ステータスが404の場合、ブラウザーは任意のロケーションヘッダーに従う必要はありません。それは、3xx応答の場合にのみロケーションヘッダーに従うべきです。

+0

typoは、 'include'を意味します。申し訳ありません、投稿を編集しました –

+0

あなたは正しいです、実行の最後にページを提供するようスクリプトを変更しました – TwoDiv

+0

受け入れられた回答は0点を持たないはずです;) – Bozho

1

いくつかのものを混ぜています。

スクリプトを実行すると、ページがあることを意味します。あなたのスクリプト内の あなたはヘッダー( "HTTP/1.1 404 Not Found")を介してステータスを制御することができます。 これはブラウザが「見つかりません」と言っています。 最後に、ページは404状態で表示されます。そのページのすべての出力はエラーページです。すべてがあなたのスクリプトによって行われます。

htaccessファイル内で404エラーページを定義すると、このページは、Apacheサーバーが見つからないエラーを処理する場合に表示されます。これは、ブラウザがサーバー上に存在しないファイルにアクセスする必要があることを意味します。ファイルindex.phpが表示されます。

ヘッダーステータスとヘッダーの位置を一緒に使用することはできません。 locationコマンドは、ステータスをリダイレクトコード3xxに設定します。リダイレクト後、サーバーはコード200のページを提供します。

あなたのサーバー上のランダムなURLにクライアントをリダイレクトすることができます。 サーバーは404ページを表示しています。

+0

良い説明+ 1 :) –

0

まず、Apache設定(AllowOverrideディレクティブ)で.htaccessファイルが有効になっているかどうかを確認します。試したErrorDocumentはうまくいくはずです!

関連する問題