このページに表示したいメッセージを除いて、正常に機能するカスタム404ページがあります。
見つからないページのURLを言いたいのですが、代わりに404ページのURLが表示されます。
これが私が持っているものです...
You were looking for <?php echo $_SERVER['REQUEST_URI'] ?>.
htaccessファイルには次の行が含まれています。ErrorDocument 404 /404/
このページに表示したいメッセージを除いて、正常に機能するカスタム404ページがあります。
見つからないページのURLを言いたいのですが、代わりに404ページのURLが表示されます。
これが私が持っているものです...
You were looking for <?php echo $_SERVER['REQUEST_URI'] ?>.
htaccessファイルには次の行が含まれています。ErrorDocument 404 /404/
代わりに使用する必要があります$_SERVER['HTTP_REFERER']
- それは彼らが最初に要求したアドレスになります。
これは、質問で説明されている正確なケースでのみ機能します-ブラウザが実際に404ページにリダイレクトされた場合。その$_SERVER['REQUEST_URI']
場合、最初に要求されたページではなく、404 ページの URI が含まれます。
ErrorDocument 404 /handle404.php
サイト構成でApache を使用することは、実際には機能.htaccess
することを意味しますが、より堅牢なソリューションは、以下の更新のオプションです。$_SERVER['REQUEST_URI']
$_SERVER['REDIRECT_URL']
しかし、少し調べてみると、どうやらより良い賭けかもしれません。
以下のコメンターが述べているように、どちらの場合でも、ヘッダーは$_POST
、$_GET
およびその他のヘッダーと同じように悪意のあるコンテンツになりやすいため、何かを出力する前にそれらを処理してください。
以下の@Janozからの投稿が表示されませんでした-彼は正しく言及していますREDIRECT_URL
.
PHP ページから見ると、これは実際にはリクエスト URI です。エラー ページの表示は、Web サーバーによって行われます。たとえば、Apache はいくつかのサーバー変数を追加します。REDIRECT_URL はおそらくあなたが探しているものです。
ページが存在しない場合は、彼を404ページにリダイレクトしますか?理想的には、見つからなかったページに404を直接表示します。このように、リダイレクトする必要はなく、REQUEST_URIを正しく使用できます。また、404のコードは引き続き一元化できます。
file_exists を使用して、ユーザーが探しているファイルが存在するかどうかを確認します。カスタムメイドのエラーページにリダイレクトしない場合。