ze$url Posté 3 Mars 2007 Posté 3 Mars 2007 Bonjour à tous! Je me demandais si quelqu'un a déjà fait la gestion des pages 404 sur un annuaire phpmyannuaire avec l'url rewriting... En fait, il s'agit des pages qui n'existent plus. Le contenu de la page est vide puisque l'id en question n'existe plus et pourtant le navigateur montre toujours la page puisque avec la réécriture des url, ca ne fonctionne pas comme il faudrait... C'est aussi le cas sur l'annuaire HUB, enfin c'est un peu différent ici car ca fonctionne sur les mots cles. Bref, quelqu'un a-t-il déjà fait ca? Bon week-end
froidure_nicolas Posté 4 Mars 2007 Posté 4 Mars 2007 Tu tombes à pic car c'est justement ce que je suis entrain de faire suite à de vaines attaque d'un guignol dues à l'utilisation de liens vers des fichiers qui n'existent pas sur mon site. En tout cas, j'espère qu'il aura été assez malin pour empêcher le cache et l'indexation de ses pages.... Heureusement, je surveille mes logs et le mal n'aura pas le temps d'agir car je m'en occupe depuis ce matin et j'avais prévu des adaptations pour faciliter cela. Je ne connais pas le cas spécifique de cet annuaire, mais si la gestion des erreurs est centralisée, il te suffit de référencer les cas où une erreur 404 devrait être retournée et, avant tout envoi de données, utiliser ceci : header('Date: ' . gmdate('D, d M Y H:i:s') . ' GMT', true, 404); Voilà ! Par contre, pour te préserver de ce genre d'attaque, il faut aussi désactiver l'indexation des URL avec index.php. Et c'est là que j'aurai besoin d'aide en ce sens que je souhaiterai pouvoir donner une intruction dans le fichier robots.txt qui empêche justement cela. Donc, si vous avez une page dans vos bookmarks qui parle de ça, je suis prenneur.
froidure_nicolas Posté 4 Mars 2007 Posté 4 Mars 2007 (modifié) Alors, j'ai fait un peu le tour de la question et je pense que ceci peut être utile : User-agent: *Disallow: /index.php* //-> Ligne 1Disallow: /?* //-> Ligne 2Disallow: /*.html?* //-> Ligne 3 Explication de mon raisonnement : Ligne 1 : ne pas indexer tout ce qui commence par index.php (en effet, on utilise l'URL rewriting donc on met à disposition le contenu à indexer sous forme de fichier HTML. Ligne 2 : Devrait avoir le même effet que le première ligne, mais pour un accès à index.php implicite. Ligne 3 : Coup de sécurité pour être sûr que les individus malveillants n'ajoutent pas des paramètres CGI au page HTML réécrites. Cependant, j'émets des réserves. Notamment au sujet du ?. En effet, je ne connais pas les algorithmes utilisés par les moteurs en la matière. Le ? dans une expression régulière signifie 0 ou 1 caractère et j'ai peur que certains moteurs ne l'interprètent comme tel. Si vous avez des ressources traitant de ce sujet, je suis prenneur. A propos de la ligne 3, je suis entrain de voir pour traiter ça directement au niveau de l'URL rewriting avec une redirection 301. Modifié 4 Mars 2007 par froidure_nicolas
ze$url Posté 4 Mars 2007 Auteur Posté 4 Mars 2007 (modifié) Salut froidure_nicolas, Merci pour tes infos. Ce n'est pas exactement ce que je cherchais mais c'est sûr que je vais utiliser ça aussi! Par contre ce que je cherche aussi est le fait de détecter sur la bd si l'id appelé corresond à une valeur de la base de données et le cas échéant rediriger vers 404 ou 301... De même pour l'url, si l'id correspond bien à une valeur de la bd mais que l'adresse ne correspond à rien, pareil rediriger vers 404. ex: Page correcte: http:// www.monsite. com/la-page-réecrite-id5.html page incorrecte: http:// www.monsite. com/n'importe-quoi-id5.html La page appellée a exactement le même contenu car id=5 et pourtant "l'url incorrecte", elle devrait dans l'idéal montrer une erreur 404. Je ne sais pas si je me fais bien comprendre... Pareil pour un id non existant. Si l'on appelle la page http:// www.monsite. com/la-page-réecrite-id5.html qui n'existe plus, le navigateur affiche une page avec du contenu vide mais page "existante" au lieu d'afficher une 404. Bonne soirée à tous! Pierre Modifié 4 Mars 2007 par ze$url
froidure_nicolas Posté 4 Mars 2007 Posté 4 Mars 2007 Je n'utilise pas ce système dans mon url rewriting à cause, justement, de cette limitation. La seule façon de faire ce que tu souhaites est un peu tordue en fait. Il s'agit : De récupérer "n-importe-quoi" dans n-importe-quoi-id5.html. Pour cela, tu devras sûrement modifier tes règles d'URL rewriting du genre : RewriteRule ^([a-z\-]+)id([0-9]+)\.html$ index.php?id=$2&mavar=$1 [L] Ensuite, tu recherche l'endroit dans ton script où se situe la requête de récupération de l'entrée avec id=5. Enfin, tu trouve la fonction qui génère le bout d'URL contenant une partie du titre de l'entrée et tu la regénère pour la comparer avec la variable $_GET['mavar']. Si c'est égal, c'est la bonne URL, sinon, c'est la mauvaise. Par contre, ne fais pas une erreur 404, mais une redirection 301. Tes visiteurs accèderont quand même au contenu et google considérera les liens vers cette URL pas si mauvaise que ça comme pointant vers la bonne URL. J'espère que j'ai été assez clair. Bonne soirée @+.
ze$url Posté 7 Mars 2007 Auteur Posté 7 Mars 2007 Salut! Merci pour tes réponses. En effet, je crois qu'il va falloir que je m'y mette et que je le fasse comme Tu l'indique. Je pensais que peut-être quelqu'un avait déjà ce bout de code tout prêt... Bonne journée à tous!
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant