私の.htaccessは/Word_here
へのすべてのリクエストを/page.php?name=Word_here
にリダイレクトします。 PHPスクリプトは、要求されたページがページの配列にあるかどうかを確認します。
そうでない場合、どのようにエラー404をシミュレートできますか?これを試しましたが、.htaccess
のErrorDocument
で設定された404ページが表示されませんでした。
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
エラー404ページにリダイレクトするのは間違っていると思いますか?
404ページを生成するための最新の回答(PHP 5.4以降)は、 http_response_code
を使用することです。
<?php
http_response_code(404);
include('my_404.php'); // provide your own HTML for the error page
die();
die()
は必ずしも必要ではありませんが、通常の実行を継続しないようにします。
あなたがしていることは機能し、ブラウザは404コードを受け取ります。それがwontすることは、あなたが期待するかもしれない "not found"ページを表示することです、例えば:
要求されたURL /test.phpがこのサーバーで見つかりませんでした。
これは、PHPが404コードを返したときにWebサーバーがそのページを送信しないためです(少なくともApacheは送信しません)。 PHPは、すべての独自の出力を送信します。したがって、同様のページが必要な場合は、HTMLを自分で送信する必要があります。例:
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>
これをhttpd.confに配置することにより、Apacheが独自の404メッセージに同じページを使用するように構成できます。
ErrorDocument 404 /notFound.php
これを試して:
<?php
header("HTTP/1.0 404 Not Found");
?>
。htaccessファイルを使用してカスタムエラーページを作成
1。404-ページが見つかりません
RewriteEngine On
ErrorDocument 404 /404.html
2。500-内部サーバーエラー
RewriteEngine On
ErrorDocument 500 /500.html
。403-禁止
RewriteEngine On
ErrorDocument 403 /403.html
4。400-不正なリクエスト
RewriteEngine On
ErrorDocument 400 /400.html
5。401-承認が必要
RewriteEngine On
ErrorDocument 401 /401.html
すべてのエラーを単一ページにリダイレクトすることもできます。like
RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html
ヘッダーを送信した後にdie()することを覚えていましたか? 404ヘッダーは自動的に処理を停止しないため、さらに処理が行われている場合は何も実行していないように見える場合があります。
404ページにリダイレクトするのは良くありませんが、そこからコンテンツを問題なく含めることができます。そうすれば、正しいURLから404ステータスを適切に送信するページができますが、「探しているもの」もあります。人間の読者のためのページ。
入れてみて
ErrorDocument 404 /(root directory)/(error file)
.htaccess
ファイル内。
エラーに対してこれを行いますが、エラーの代わりに404を使用します。
DrupalまたはWordpress CMS(およびその他の可能性が高い)で、一部のカスタムphpコードが存在しないようにしようとする場合(一部の条件が満たされない限り)、次のように動作しますCMSの404ハンドラーを引き継ぐことにより:
<?php
if(condition){
do stuff;
} else {
include('index.php');
}
?>