Tout rediriger vers un fichier php

Nouveau WRInaute
Salut,

J'avais trouvé une méthode très simple pour faire de l'url rewriting.
Dans .htacces j'avais mis :
"ErrorDocument 404 /index.php"
Et dans index.php, je récupérais la variable globale $REQUEST_URI, que je décomposais en différentes variables pour produire à la volée la page requise.

Tout marche impeccable, sauf un petit problème : une erreur 404 est renvoyée...

Ca ne gène pas un visiteur lambda qui n'y voit que du feu, mais googlebot, lui, perçoit l'erreur 404, en conclut que ma page n'existe pas, ce qui n'est pas très bon pour le référencement.

Je n'ai pas très envie de me mettre à l'url rewriting traditionnel.
Je vouvrais bien garder la même méthode, mais sans générer une erreur...
Comment écrire mon .htaccess pour que toute requête soit renvoyée sans erreur vers index.php ? (Tout en gardant bien sûr dans $REQUEST_URI la requête du visiteur).
 
WRInaute accro
Salut,

La méthode que tu expliques avec l'erreur 404, ca va aussi très bien pour faire des urls "search engine friendly"

C'est expliqué ici: (en anglais)
http://www.sitepoint.com/article/search ... dly-urls/2

Google ne va pas voir pas d'erreur 404, c'est Apache qui génére un 404 -> ca redirige vers ton index.php et il renvoie un code 200 found.

Le problème de cette technique c'est que le fichier log de apache va être rempli d'erreurs 404.

NB: si tu comptes utiliser cette technique, fait attention pour tes formulaires au action="..." !
En effet, si tu POST des données vers un fichier qui n'existe pas, index.php va s'en charger, mais les données POST ne seront pas re-transmises apres l'erreur 404!

C'est vrai que l'url rewriting c'est pas super facile, personnelement j'utilise la méthode du PATH_INFO, avec des liens symboliques vers les fichiers php pour faire de jolies URL (semblant de répertoires)
 
WRInaute impliqué
spoutnik a dit:
Google ne va pas voir pas d'erreur 404, c'est Apache qui génére un 404 -> ca redirige vers ton index.php et il renvoie un code 200 found.

A condition de rajouter:
Code:
header('HTTP/1.1 200 OK');

dans le fichier qui traite l'erreur.
 
Nouveau WRInaute
spoutnik a dit:
Salut,
Google ne va pas voir pas d'erreur 404, c'est Apache qui génére un 404 -> ca redirige vers ton index.php et il renvoie un code 200 found.

?? Ecoute, je me suis aperçu du pb parce que google ne référence pas du tout mes pas autres que index, alors que googlebot les visite.

On m'a conseillé d'aller tester ma page sur http://fr.webmasterplan.com/cgi-local/linkwmp.cgi, et j'ai réalisé que tous mes liens internes renvoyaient 404.

J'ai fait le rapport avec ma façon de rediriger. Mais je vois que cette solution avait déjà été testée par qqun chez free, et qu'il prétendait être qd même correctement référencé.

Moi, pour ma part, je suis sûr que c'est l'origine de mes pbs, et si il existe une soluce, indiquez-la moi svp.
 
Nouveau WRInaute
shrom a dit:
spoutnik a dit:
Google ne va pas voir pas d'erreur 404, c'est Apache qui génére un 404 -> ca redirige vers ton index.php et il renvoie un code 200 found.

A condition de rajouter:
Code:
header('HTTP/1.1 200 OK');

dans le fichier qui traite l'erreur.

Tu rajoutes ça dans quoi ? .htaccess ou index.php ?
 
WRInaute impliqué
Pasco a dit:
A condition de rajouter:
Code:
header('HTTP/1.1 200 OK');

dans le fichier qui traite l'erreur.

Tu rajoutes ça dans quoi ? .htaccess ou index.php ?[/quote]

index.php sinon Apache renvoie un 404.
 
Nouveau WRInaute
J'ai une solution :

Dans mon fichier .htacces, j'écris :

RewriteEngine on
RewriteRule ^(.+)\.htm$ /index.php

Et contrairement à ce que je pensais, on peut encore récupérer $REQUEST_URI avec la requête du visiteur. Il ne reste plus qu'à traiter cette requête.

Bref, c'est exactement comme avec ErrorDocument 404 /index.php, sauf qu'aucune erreur 404 est générée. Ca a l'air de marcher parfaitement.

Pour avoir confirmation, j'attends que google se décide à référencer mes pages secondes.

A+
 
Discussions similaires
Haut