ホームページ >バックエンド開発 >PHPの問題 >PHP 404エラーを書き換える方法

PHP 404エラーを書き換える方法

藏色散人
藏色散人オリジナル
2020-07-13 09:11:232431ブラウズ

php 404 エラーの書き換え方法: 最初に URL を設定し、タイムゾーンを設定し、次に PHP 組み込み関数 Mail を呼び出して電子メールを送信し、次にアクセスする拡張子を設定し、最後に関連するコード ファイルを設定します。 「404.php」にこれだけです。

PHP 404エラーを書き換える方法

PHP を使用して 404 エラー ページを書き換える

404 エラーは、アクセスしたい場合に多くの人が知っていることです。 URL このページは、存在しない場合に読み取られて表示されます。以前は、404 に対処するための通常のアプローチは、単純に数行のテキストを書くことであり、興味のある人はそれを少し美化するかもしれません。これを利用したい人は、メタ タグを使用して遅延リダイレクトを行うこともできます。それだけです。実際、404 は多くのことを行うのにも役立ちます。これが、今日説明する内容の焦点です。

まず第一に、私が何を意味するのか説明させてください。404 は正確に私に何をしてくれるのでしょう:

1. 彼はいつ、どこで私に教えてくれるでしょう。ユーザーが私の URL にアクセスしようとしましたが、結果は失敗しました。

2. 彼は相手がなぜこの URL にアクセスしたいのかを教えてくれて、ウェブサイトの最適化を手伝ってくれます。

3. 彼は相手の IP アドレスを教えてくれます

4. 彼はこの人の意図が何であるかを教えてくれます

5. 私に言いたくないことは黙ってもらうことができます

6. 彼は私に言いたいことをメールで送ってもらえます

7. 彼は 301 永久リダイレクトの作成を手伝ってくれます。

8. 彼は誰かが私の Web サイトまたはホストに侵入しようとしていることを教えてくれます

それは非常に神秘的でクールに聞こえます。わかりました、続けましょう。次に、彼がどのようにそれを行ったかについて説明しましょう。1 つずつ分析してください:

1. 私たちはPHP を使用してユーザーのソース URL と現在の URL を取得できるため、非常に簡単に行うことができます。

2. ソース URL があるため、直感的に推測できます。たとえば、私の Web サイト http://lailinlin.com のように、ユーザーのソース URL が http://lailinlin.com で、キャプチャされた現在の URL が http://lailinlin である場合を考えてみましょう。 com/user.php?id=1 の場合、この人が私の Web サイトを閲覧し、個人情報のページをクリックした際に、その人の情報が見つからずにエラーが発生したことを意味します。つまり、ID=1 の製品です。存在しない可能性があり、削除されている場合は、Web サイトにこの URL へのハイパーリンクがあるかどうかを確認してください。存在する場合は、それを削除する方法を見つけてください。

3.この機能は比較的単純で、PHP を使用して相手の IP を取得するだけで、他の Web サイトの IP to Physical Address 機能を使用して、その人の出身地を知ることができます。

4. この機能はとても便利です わかりました、非常に強力です 私の Web サイト http://lailinlin.com は自己設定サーバーなので、セキュリティ面は自分で処理しなければなりません、そして、しばしば悪徳野郎がいます。他の人のサーバーに興味があり、プログラムを使用する可能性があります。サーバーに入るためにさまざまな方法を試してみると、短期間に大量の 404 エラーが発生し、ソース URL が空であることがわかります。彼らがアクセスしようとしている URL はすべて非常に機密性の高い URL です。現時点で必要なのは、ファイアウォール設定を開いて、この IP を完全にブロックすることだけです。最近、私はこの方法を使用して数十の IP をブロックしました。本当に小さな努力が大きな違いを生みます!言い忘れていましたが、情報産業省の IP もブロックされています。私のサーバーは台湾にあります。なぜそれを確認しようとしているのですか?本当に!彼のおかげです。私は毎日何百もの電子メールを受け取りますが、その一部はユーザーが通常に閲覧していることによって引き起こされ、その一部はコンテンツを収集するさまざまな検索エンジンによって引き起こされ、また一部は侵入しようとする悪意のある者によって引き起こされます。面倒になったので、少し変更して、条件を満たす拡張子や条件を満たすIPをすべて検証に追加したところ、条件を満たしていればメールを送信する必要がなくなり、

6 . これらすべては、電子メールを即座に送信する PHP の機能と切り離せません. 私のアプローチは、PHP.INI を変更して、送信用の PHP の内部メール関数を実装することです。 、sendmail のインストールやメール クラスの開発など、他の方法を使用することもできます。安心できる限り、サードパーティの SMTP を使用して送信することもできます (具体的な詳細については、今日の説明の範囲ではありません)。 .

7. このページにアクセスできるということは、ユーザーが訪れたURLが存在しないことを意味するので、正しいURLにアクセスするようにユーザーを誘導する必要があります。ユーザーを正しい URL にアクセスするように誘導しているので、メタ タグや JS 遅延を使用するだけで十分だと思われるかもしれません。なぜわざわざ 301 リダイレクトを使うのですか? ?検索エンジンに不正行為をしていると思われたくないからです。回答は完了しました。

8. この点については上ですでに説明しました。基本的に、この野郎の判断は、あなたの経験と自分の Web サイトへの精通に依存します。さらに、自分の Web サイト上のどの URL が他の Web サイトによってバックリンクされているかを一般的に理解する必要があります (経験上、これは一夜にして達成できるものではありません)。

何を言うべきか、何をすべきか言われたことは終わりました。ショーは次に上演されようとしています。以下のコードを 404.php として保存し、Apache または nginx を使用して 404 エラーを保存してください。ページをポイントするだけです。

<?PHP
  
  
#设置URL,注意没有后划线/
$MyURL = (isSet($_SERVER[&#39;HTTP_HOST&#39;])) ? Str_iReplace(&#39;http://&#39;,&#39;&#39;,StrToLower(rTrim($_SERVER[&#39;HTTP_HOST&#39;],&#39;/&#39;))) : &#39;www.7di.net&#39;;
  
#设置URL,注意没有后划线/
$MyDomain = (isSet($_SERVER[&#39;HTTP_HOST&#39;])) ? &#39;http://&#39;.Str_iReplace(&#39;http://&#39;,&#39;&#39;,StrToLower(rTrim($_SERVER[&#39;HTTP_HOST&#39;],&#39;/&#39;))) : &#39;http://www.7di.net&#39;;
  
//設定時區.主要用來修正8小時時差
Date_Default_Timezone_Set(&#39;Etc/GMT-8&#39;);
  
//输出头部
Header(&#39;Content-type:text/html; charset=utf-8&#39;);
  
/**
发送電郵
参数:
收件人,郵件標題(不可有換行符),郵件內容(行與行之間必須用\n分隔,每行不可超過70個字符)
說明:
調用PHP內置函式Mail發送電郵
返回:
返回布爾值
用法:
$IsSend=Fun::Mail2($email,$tit,$msg);
/**/
Function Mail2($to,$tit,$msg) {
IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==&#39;&#39;){
throw new Exception(&#39;電郵地址錯誤!&#39;);
}
  
$tit=&#39;=?UTF-8?B?&#39;.Base64_Encode($tit).&#39;?=&#39;;
$msg = str_replace("\n.","\n..",$msg); //Windows如果在一行开头发现一个句号则会被删掉,要避免此问题将单个句号替换成两个句号
  
Return Mail($to,$tit,$msg,&#39;From:see7di@gmail.com&#39;."\n".&#39;Content-Type:text/html;charset=utf-8&#39;);
}
  
$msg=&#39;<table cellspacing="0" cellpadding="0" border="0"><tr><td style="padding:5px;background-color:#F57900;font-size:13px;border:2px solid #222;color:#222;">&#39;;
$msg.=(isSet($_SERVER[&#39;REMOTE_ADDR&#39;])) ? "<b> 來訪者IP是:</b><br><a href=&#39;http://www.ip138.com/ips138.asp?ip={$_SERVER[&#39;REMOTE_ADDR&#39;]}&action=2&#39; target=&#39;_blank&#39;>{$_SERVER[&#39;REMOTE_ADDR&#39;]}</a><br>" : &#39;&#39;;
$msg.="<b>來訪時間:</b><br>".date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br><br>&#39;;
$msg.=(isSet($_SERVER[&#39;REMOTE_HOST&#39;])) ? "<a href=&#39;http://www.ip138.com/ips138.asp?ip={$_SERVER[&#39;REMOTE_HOST&#39;]}&action=2&#39; target=&#39;_blank&#39;>{$_SERVER[&#39;REMOTE_HOST&#39;]}</a><br><br>" : &#39;<br>&#39;;
$msg.=(isSet($_SERVER[&#39;HTTP_USER_AGENT&#39;])) ? "<b>來訪者詳細資料:</b><br>{$_SERVER[&#39;HTTP_USER_AGENT&#39;]}<br><br>" : &#39;&#39;;
$msg.=(isSet($_SERVER[&#39;REQUEST_URI&#39;])) ? "<b>要訪問的頁面是:</b><br>{$MyDomain}{$_SERVER[&#39;REQUEST_URI&#39;]}<br><br>" : &#39;&#39;;
$msg.=(isSet($_SERVER[&#39;HTTP_REFERER&#39;]) And Trim($_SERVER[&#39;HTTP_REFERER&#39;])!=&#39;&#39;) ? "<b>來源地址是:</b><br>{$_SERVER[&#39;HTTP_REFERER&#39;]}<br><br>" : &#39;&#39;;
$msg.=&#39;</td></tr></table>&#39;;
  
//哪些類型的URL不發Email,如果不屏蔽掉這些的話能煩死我
$arr=Array(&#39;mp3&#39;,&#39;rm&#39;,&#39;swf&#39;,&#39;jpg&#39;,&#39;gif&#39;);
  
//哪些IP不發Email,這些基本都是搜索引擎的蜘蛛
$arrIP=Array(&#39;66.249.77.217&#39;,&#39;66.249.74.67&#39;);
  
//要訪問的擴展名
$needEx=Explode(&#39;.&#39;,StrToLower(Trim($_SERVER[&#39;REQUEST_URI&#39;])));
$needEx=end($needEx);
  
IF(!In_Array($needEx,$arr) And !In_Array(Trim($_SERVER[&#39;REMOTE_ADDR&#39;]),$arrIP)) {
Mail2(&#39;see7di@gmail.com&#39;,&#39;來自【&#39;.$MyURL.&#39;】的404錯誤!&#39;,$msg);
}
  
unSet($MyURL,$msg,$needEx,$arr);
Header(&#39;HTTP/1.1 301 Moved Permanently&#39;);
Header ("Location:{$MyDomain}");
Die();

詳細については、知識がある場合は、

PHP 中国語 Web サイト

をご覧ください。

以上がPHP 404エラーを書き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。