12

このページに表示したいメッセージを除いて、正常に機能するカスタム404ページがあります。

見つからないページのURLを言いたいのですが、代わりに404ページのURLが表示されます。

これが私が持っているものです...

You were looking for <?php echo $_SERVER['REQUEST_URI'] ?>.

htaccessファイルには次の行が含まれています。ErrorDocument 404 /404/

4

5 に答える 5

12

代わりに使用する必要があります$_SERVER['HTTP_REFERER']- それは彼らが最初に要求したアドレスになります。

これは、質問で説明されている正確なケースでのみ機能します-ブラウザが実際に404ページにリダイレクトされた場合。その$_SERVER['REQUEST_URI']場合、最初に要求されたページではなく、404 ページの URI が含まれます。

ErrorDocument 404 /handle404.phpサイト構成でApache を使用することは、実際には機能.htaccessすることを意味しますが、より堅牢なソリューションは、以下の更新のオプションです。$_SERVER['REQUEST_URI']

アップデート:

$_SERVER['REDIRECT_URL']しかし、少し調べてみると、どうやらより良い賭けかもしれません。

以下のコメンターが述べているように、どちらの場合でも、ヘッダーは$_POST$_GETおよびその他のヘッダーと同じように悪意のあるコンテンツになりやすいため、何かを出力する前にそれらを処理してください。

更新 2:

以下の@Janozからの投稿が表示されませんでした-彼は正しく言及していますREDIRECT_URL.

于 2011-04-14T12:49:30.347 に答える
7

PHP ページから見ると、これは実際にはリクエスト URI です。エラー ページの表示は、Web サーバーによって行われます。たとえば、Apache はいくつかのサーバー変数を追加します。REDIRECT_URL はおそらくあなたが探しているものです。

于 2011-04-14T12:52:41.070 に答える
0

ページが存在しない場合は、彼を404ページにリダイレクトしますか?理想的には、見つからなかったページに404を直接表示します。このように、リダイレクトする必要はなく、REQUEST_URIを正しく使用できます。また、404のコードは引き続き一元化できます。

于 2011-04-14T13:00:43.407 に答える
0

file_exists を使用して、ユーザーが探しているファイルが存在するかどうかを確認します。カスタムメイドのエラーページにリダイレクトしない場合。

于 2011-04-20T10:08:23.427 に答える