Maison  >  Article  >  développement back-end  >  Comment réécrire l'erreur php 404

Comment réécrire l'erreur php 404

藏色散人
藏色散人original
2020-07-13 09:11:232399parcourir

Comment réécrire l'erreur php 404 : définissez d'abord l'URL et définissez le fuseau horaire ; puis appelez la fonction PHP intégrée Mail pour envoyer l'e-mail, puis définissez l'extension à laquelle accéder ; fichier de code en "404.php "C'est tout.

Comment réécrire l'erreur php 404

Utilisez PHP pour réécrire la page d'erreur 404

Erreur 404, beaucoup de gens savent que si vous souhaitez visiter l'url Cette page est lue et affichée lorsqu'elle n'existe pas. Dans le passé, notre approche habituelle pour traiter le 404 consistait simplement à écrire quelques lignes de texte, et certaines personnes intéressées pouvaient même l'embellir un peu, et un petit nombre. des personnes qui souhaitent en profiter peuvent même utiliser des balises méta pour effectuer une redirection différée, c'est tout. En fait, 404 peut aussi nous aider à faire beaucoup de choses. C'est l'objet de ce dont nous allons discuter aujourd'hui. 🎜>

Tout d'abord, laissez-moi vous expliquer ce que je veux dire. Que peut faire exactement 404 pour moi :

1. l'utilisateur à partir duquel accéder à mon URL a échoué.

2. Il peut me dire pourquoi l'autre partie veut visiter cette URL et m'aider à optimiser le site Web

3. Il peut me dire l'adresse IP de l'autre partie

4. Il peut me dire quelles sont les intentions de cette personne

5. Je peux le faire taire à propos de choses qu'il ne veut pas me dire

6 Il peut m'envoyer par email ce qu'il veut me dire

7. Il peut m'aider à faire une redirection permanente 301

8. Il peut me dire que quelqu'un essaie d'envahir mon site Web ou mon hébergeur

.

Cela semble très mystérieux et cool, d'accord, prenez-le. Ensuite, discutons de la façon dont il l'a fait :

1. capturez l'URL source de l'utilisateur et l'URL actuelle, donc le premier point peut être fait très facilement

2 Grâce à l'URL source, vous pouvez deviner intuitivement l'intention de l'utilisateur. Je vous donne un exemple, comme le mien Site Web http://lailinlin.com, si l'URL source d'un utilisateur est http://lailinlin.com et que l'URL actuelle capturée est http://lailinlin.com/user.php ?id=1, alors Cela signifie que lorsque cette personne a parcouru mon site Web et cliqué sur la page d'informations personnelles d'une personne, elle n'a pas pu trouver les informations de la personne et a commis une erreur. Cela signifie : le produit avec l'ID=1 peut ne pas exister et a. a été supprimé, alors vérifiez simplement s'il y a un lien hypertexte vers cette URL sur le site Web. Si c'est le cas, trouvez un moyen de le supprimer

3. . , il vous suffit d'utiliser PHP pour capturer l'adresse IP de l'autre partie. Vous pouvez ensuite savoir d'où vient la personne en utilisant la fonction de conversion d'adresse IP en adresse physique d'autres sites Web

4. . Cette fonction est très utile. Ok, très puissante. Parce que mon site http://lailinlin.com est un serveur auto-configuré, je dois gérer moi-même les aspects de sécurité, et il y a souvent des gars sans scrupules qui s'intéressent à d'autres. Les serveurs des gens et ils utiliseront des programmes. Essayez différentes méthodes pour accéder au serveur, et à ce moment-là, vous constaterez que vous recevez un grand nombre d'erreurs 404 en peu de temps et que l'URL source est vide. Pour y accéder, il y a toutes des URL très sensibles. Pour le moment, tout ce que vous avez à faire est d'ouvrir les paramètres de votre pare-feu, puis de bloquer proprement cette adresse IP. J'ai récemment utilisé cette méthode pour bloquer des dizaines d'adresses IP, et c'est vraiment un problème. petit effort qui fait une grande différence ! J'ai oublié de mentionner que l'adresse IP du ministère de l'Industrie de l'information est également bloquée par moi. Mon serveur est à Taiwan. Pourquoi essayez-vous de le vérifier ? Vraiment grâce à lui ! Je reçois des centaines d'e-mails chaque jour, dont certains sont causés par la navigation normale des utilisateurs, certains sont causés par divers moteurs de recherche collectant du contenu, et certains sont causés par des méchants qui veulent envahir. Plus tard, j'ai fait une légère modification et ajouté toutes les extensions qui remplissent les conditions ou les IP qui remplissent les conditions de vérification. Tant que celles-ci remplissent les conditions, il n'est pas nécessaire d'envoyer des e-mails, ce qui fait beaucoup plus. rafraîchissant.

6 . Tout cela est indissociable de la capacité de PHP à envoyer des e-mails instantanément. Mon approche consiste à modifier PHP.INI pour implémenter la fonction de messagerie interne de PHP pour l'envoi. Vous pouvez également utiliser d'autres méthodes, telles que l'installation de sendmail ou le développement d'une classe de courrier. Vous pouvez l'envoyer à l'aide d'un smtp tiers tant que vous vous sentez à l'aise (les détails spécifiques ne font pas partie de la discussion d'aujourd'hui). 🎜>

7. Puisque cette page est accessible, cela signifie que l'URL visitée par l'utilisateur n'existe pas, nous devons donc guider les utilisateurs pour accéder à la bonne URL. guident les utilisateurs pour accéder à la bonne URL, on pourrait dire qu'il suffit d'utiliser une balise méta ou un délai JS. Pourquoi s'embêter avec une redirection 301 ? Parce que je ne veux pas que les moteurs de recherche pensent que je triche ? .

8. J'ai déjà expliqué cela ci-dessus, en gros, le jugement de Xiaoyasan doit être basé sur Cela dépend de votre expérience et de votre familiarité avec votre propre site Web. avoir une compréhension générale des URL de votre site Web qui sont backlinkées par d'autres sites Web (l'expérience, cela ne peut pas être réalisé du jour au lendemain

Ce qui doit être dit et ce qui doit être dit est terminé). le plaisir est sur le point de se produire ensuite. Enregistrez le code ci-dessous sous 404.php, puis utilisez Apache ou nginx pour enregistrer votre erreur 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();

Pour plus de connaissances connexes, veuillez visiter le <.>Site Web PHP chinois

 !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Pourquoi php est-il froid ?Article suivant:Pourquoi php est-il froid ?