Aller au contenu

URL Rewrite et les pages d'erreur...


ze$url

Sujets conseillés

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 :wacko:

Lien vers le commentaire
Partager sur d’autres sites

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....

Smiley5.gif

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.

Lien vers le commentaire
Partager sur d’autres sites

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 1
Disallow: /?* //-> Ligne 2
Disallow: /*.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é par froidure_nicolas
Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par ze$url
Lien vers le commentaire
Partager sur d’autres sites

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 @+.

Lien vers le commentaire
Partager sur d’autres sites

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... :wacko:

Bonne journée à tous!

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...