ユーザーが存在するページに到達したが、ユーザーに見せたくない場合に404エラーを表示したい。
次のようなリダイレクト(アドレスバーにエラーページのリンクがアドレスバーに表示される)を実行したくありません。
if ($this_page_should_not_be_seen)
header("Location: err.php?e=404");
代わりに、ブラウザのアドレスのURLを変更しない限り、ページは実際には存在しないように見えるはずです。
ユーザーが存在するページに到達したが、ユーザーに見せたくない場合に404エラーを表示したい。
次のようなリダイレクト(アドレスバーにエラーページのリンクがアドレスバーに表示される)を実行したくありません。
if ($this_page_should_not_be_seen)
header("Location: err.php?e=404");
代わりに、ブラウザのアドレスのURLを変更しない限り、ページは実際には存在しないように見えるはずです。
現在のページにエラーページを含め、404エラーステータスコードを送信します。
<?php
if ($nobody_should_ever_be_here) {
header('HTTP/1.1 404 Not Found'); //This may be put inside err.php instead
$_GET['e'] = 404; //Set the variable for the error code (you cannot have a
// querystring in an include directive).
include 'err.php';
exit; //Do not do any more work in this script.
}
?>
ページが表示されないようにする場合は、これを使用する必要があることに注意してください。許可されていないアクセスのより適切なステータスコード(ログインしているユーザーにページが表示される場合)は403(許可されていません)です。
プログラムで404(または実際には他のHTTP応答コード)を実現できます
header('HTTP/1.0 404 Not Found');
die;
私の経験では、URLを変更せずに404エラードキュメントを表示する最良の方法は、apaches.htaccess
ファイルでエラードキュメントを定義することです。
RewriteEngine on
RewriteBase /
# Defines 404 error pages content:
ErrorDocument 404 /my_root/errors/404.html
# for all invalid links (non existing files):
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* - [L,R=404]
# for some valid links (existing files to be un-accessible):
RewriteCond %{THE_REQUEST} ^.*some_file.php.*$ [NC]
RewriteRule .* - [L,R=404]
あなたが書いたものは私たちが理解するのを難しくします。
着信ユーザーが到達したくないページに到達した場合、着信ユーザーを404エラーページにリダイレクトしたいと思います。
それで、人は存在するページに到達しますか?
たとえば、その人が保護されたページに到達した場合、その人は見ることができません。ヘッダーを使用するのが最善の方法です。オプションはmeta-refreshまたはjavascriptをエコーすることですが、ヘッダーははるかにクリーンです。You do not have permission to do that!
Web上でかなり一般的なものを表示できます。リダイレクトしたくない場合は、ヘッダーを介して404「偽のメッセージ」を表示できます。
誰かが404ページ(存在しないファイル)に到達することについて話している場合、唯一のオプションは.htaccessを使用することです。
次のように404ページに移動できますか
header('場所:http ://www.website.com/errors/404.php ');
これらはすべて、単一ページの404エラーにリダイレクトするための優れた回答です。これは、条件をテストし、サイト上の任意のスクリプトに リダイレクトできるようにするソリューションです。
.htaccess
書き換えルールを使用してファイルを作成し[QSA,NC,L]
、ページの場所とヘッダーのpost/get引数を維持するために使用します...
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,NC,L]
これにより、すべてのページがリダイレクトされ./index.php
ます(すでにを使用している場合は、この名前を変更してくださいindex.php
)。URLは変更されません。次に、でindex.php
、いくつかの条件を確認し、合格した場合はスクリプトを示す変数を含め、そうでない場合はカスタム404を実行します。これは、...$_SERVER
で例外処理を簡単に制御できることを意味します。index.php
$someNon404Condition = file_exists($_SERVER['PHP_SELF']);
if ($someNon404Condition) {
include($_SERVER['PHP_SELF']); // do the stuff
} else {
print("404! Why are you trying to access " . $_SERVER['PHP_SELF'] . "?");
}
これにより、他にもたくさんのことができます!静的な404.htmlページを忘れて、動的なページを使用して...
explode('/', $_SERVER['PHP_SELF'])
、「多分これはあなたが探していたものですか?」というヘッダーの下にそれらの一致した結果のリストを表示します。