OVH Cloud OVH Cloud

404

19 réponses
Avatar
VarioFlux
Hello
Dans une page php, comment intercepter une variable GET puis provoquer
une erreur 404 basique en fonction de sa valeur ?

En l'occurence, il s'agit pour moi de pouvoir faire un test du type :

if ($_GET['id'] == 999) {
header("HTTP/1.0 404 Not Found");
}

ce simple test affiche la page normalement même si id vaut 999. Si j'y
ajoute exit; le script stoppe (donc le test est bien positif) mais
toujours pas de page 404 !

En d'autre terme, comment simuler ou provoquer une "vraie" erreur 404 ?

Merci

--
VarioFlux @-`-,--

Metteur en scène cherche nain pour rôle dans court métrage.

9 réponses

1 2
Avatar
Mickael Wolff

Si vous avez d'autres idées ?


Ben pour générer l'erreur tu as tout bon. Le bot il regarde pas le
contenu de la page s'il reçoit un 404 ou un 500 (modulo un bot pervers).

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Avatar
Paul
...

Si vous avez d'autres idées ?
suite "pour les nuls" :

http://www.rstack.org/oudot/20022003/456/netbus/4_rapport.htm

Avatar
Antoine Polatouche
Donc mon idée est de générer une "vraie" erreur 404 sur ces pages là et
uniquement celles-là car le reste est très bien référencé.

Si vous avez d'autres idées ?


Si tu mets une page d'erreur, ils risquent d'attaquer tes autres pages.
Pourquoi ne fais-tu pas un vrai faux traitement: tu fais réagir ta page
comme normalement en répondant que tout est normal et tu ne fais aucun
traitement. Les robots ne vont pas voir si leurs posts ont été bien
écrits ;-)
Ils s'acharnent alors sur une page qui ne fait rien et sont contents
comme ça.

Avatar
VarioFlux
Il se trouve que Antoine Polatouche a formulé :
Donc mon idée est de générer une "vraie" erreur 404 sur ces pages là et
uniquement celles-là car le reste est très bien référencé.

Si vous avez d'autres idées ?


Si tu mets une page d'erreur, ils risquent d'attaquer tes autres pages.
Pourquoi ne fais-tu pas un vrai faux traitement: tu fais réagir ta page
comme normalement en répondant que tout est normal et tu ne fais aucun
traitement. Les robots ne vont pas voir si leurs posts ont été bien
écrits ;-)
Ils s'acharnent alors sur une page qui ne fait rien et sont contents
comme ça.


C'est ce qui me fais hésiter, à vrai dire, c'est pour ça que je voulais
une "vraie de vraie" page 404 ! Apache doit bien générer ou faire un
include de ce texte...

En attendant je fais le gros dos, mais ça dure depuis 3 ou 4 mois et
heureusement que j'ai un dédié...

--
VarioFlux @-`-,--

Sourd rencontrerait sourd pour trouver terrain d'entente.


Avatar
Mickael Wolff

C'est ce qui me fais hésiter, à vrai dire, c'est pour ça que je voulais
une "vraie de vraie" page 404 ! Apache doit bien générer ou faire un
include de ce texte...


Du tout, c'est en dur dans le code. À la ligne 860, dans la version
trouvée via GoogleCodeSearch :

<http://www.google.com/codesearch?hl=fr&q=+lang:c+package:apache2+404+Not+Found+show:ib7AnBjygJU:xZupCAn-wMo:_ssPKX9GHUk&sa=N&cd=1&ct=rc&cs_p=http://ftp.debian.org/debian/pool/main/a/apache2/apache2_2.2.3.orig.tar.gz&cs_f=httpd-2.2.3/modules/http/http_protocol.c#first>

Ce qu'il faut comprendre, c'est que le texte n'est qu'un plus généré
pour l'utilisateur. En fait, le navigateur devrait afficher un message à
mon avis... mais bon, il a été décidé que la même erreur devait pouvoir
être représentée au goût du Webmaster. C'est ce qu'on appelle rendre
l'environnement cohérent ;)

Il ne faut pas que tu oublie que PHP est un module de Apache, et que
Apache, une fois qu'il a préparé les informations HTTP les mets à
disposition des modules et appelle les modules selon la nécessité. Si
Apache a trouvé un fichier à traiter, il n'a pas de raison de vérifier
que le module a changé l'état HTTP : il envoie ce qui a été modifié par
le module, point.

Sinon Apache serait trop intrusif, et les modules perdraient de leur
intérêt.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Avatar
Patrick 'Zener' Brunet
Bonjour.

"Bob" a écrit dans le message de news:

VarioFlux a exposé le 12/11/2007 :

En d'autre terme, comment simuler ou provoquer une "vraie" erreur 404 ?


Après avoir envoyé la bonne entête HTTP kivabien, il ne faut pas
oublier d'envoyer la page HTML.

Une page 404 standard d'apache peut se réprésenter par le code PHP
suivant :

<?php
header("HTTP/1.0 404 Not Found");

echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL '.$_SERVER['REQUEST_URI'].' was not
found on this server.</p>
<hr>
<address>'.$_SERVER['SERVER_SIGNATURE'].'</address>
</body></html>';
?>

A adapter selon vos besoins.


Je me suis posé le problème aussi...

Je crois qu'on peut reformuler en:
comment renvoyer à la page 404 standard de son hébergeur (avec un status 404
bien sûr).

Donc comment rendre la main au serveur pour qu'il fasse le traitement 404
par défaut, après qu'il ait trouvé un script à servir ?

Pas sûr que ce soit possible...

Merci.

--
Cordialement.
--
/**************************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
**************************************************/


Avatar
Patrick 'Zener' Brunet
Bonjour.

"VarioFlux" a écrit dans le message de news:

Mickael Wolff avait prétendu :

La question existentielle du jour : ça sert à quoi ?
[...]



Ben je suis plus prosaïque que ça :

Depuis plusieurs semaines des bots attaquent ma galerie photo dans le
but d'y déposer des commentaires "exotiques" :o)
[...]


If you want do delete your site from our spam bases - just email us


with domain of your site:

thank you!
<<

Donc mon idée est de générer une "vraie" erreur 404 sur ces pages là et
uniquement celles-là car le reste est très bien référencé.

Si vous avez d'autres idées ?


Donnez-leur ce qu'ils veulent, en renommant les URL:
http://www.monkeys.com/cgi-bin/wpoison/wpoison.cgi/tetaclac

http://www.monkeys.com/wpoison/ pour description.

--
Cordialement.
--
/**************************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
**************************************************/



Avatar
Mickael Wolff

Donc comment rendre la main au serveur pour qu'il fasse le traitement 404
par défaut, après qu'il ait trouvé un script à servir ?

Pas sûr que ce soit possible...


Si avant de répondre tu lisait l'intégralité de la discussion, tu
constaterais qu'on était déjà arrivé à cette conclusion.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Avatar
VarioFlux
Mickael Wolff a pensé très fort :

Donc comment rendre la main au serveur pour qu'il fasse le traitement 404
par défaut, après qu'il ait trouvé un script à servir ?

Pas sûr que ce soit possible...


Si avant de répondre tu lisait l'intégralité de la discussion, tu
constaterais qu'on était déjà arrivé à cette conclusion.


Bon, je suis heureux de vous proposer la solution que j'ai trouvé :

*--
if ($_GET['image_id'] == 205) {
if ($_SERVER['HTTP_REFERER'] == '') {
header("HTTP/1.1 404 Not Found");
header("Content-Type:text/html");
header("Connection: close");
exit();
}
}
*--

ces quelques lignes répondent à ma problématique de départ.

C'est à dire renvoyer "une vraie erreur 404 apache pur jus" selon un
paramètre, j'y ai ajouté deplus un test sur le referer car les robots
qui tentent de spammer ma galerie n'en envoient pas et tapent
directement la page, alors que les 9/10ème des visiteurs normaux
arrivent sur cette page en suivant des liens.

Je vais bien voir si ça va exciter les spammeurs ou les calmer...
:o)

--
VarioFlux @-`-,--

Metteur en scène cherche nain pour rôle dans court métrage.


1 2