Url Rewriting : La boucle sans fin de la mort.

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

lesnouvelles
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 6 Jan 2005

Url Rewriting : La boucle sans fin de la mort.

Message le Jeu Jan 13, 2005 11:06

Bonjour !

Mon souci semble un problème courant, mais je n'ai pas trouvé de réponse définitive dans les forums jusqu'à présent.

Je réécris les pages machin.html en pages php?var=xxx et je souhaite que Google, qui connait déjà les pages php, ne les référence plus mais indexe plutôt leur équivalent html, censé être désormais l'accès "public" du site.

Prenons un exemple simple sans variables (et qui bien sûr ne marche pas !) :

Code: Tout sélectionner
RewriteEngine On
RewriteBase /

RewriteRule   ^index\.html$ /index\.php [L]
RewriteRule   ^index\.php$ http://domaine\.com/index\.html [R=301,L]


A première vue, j'imagine qu'un appel à index.html sera donc réécrit en index.php et le traitement s'arrêtera là. Tandis qu'un appel à index.php sera renvoyé définitivement vers index.html dans un premier temps, puis réécrit en index.php et ça s'arrêtera là toujours grâce au flag [L] de la première ligne.

Oui mais voilà, ça marche pas. On dirait que le flag [L] n'est pas pris en compte. A l'appel de l'une ou l'autre des pages j'entre dans une boucle de redirections sans fin. J'ai l'impression d'avoir tout essayé, rien n'y fait (en changeant l'ordre des règles, en supprimant l'appel via -http://domaine.com, etc...).

Pourtant, sur un code aussi simple avec deux pages, ça devrait pas être trop compliqué, hein ? :( L'UR elle-même fonctionne à merveille, c'est juste "l'UR inversé" qui pose un problème et me coûte mes derniers cheveux.

Je sais bien que je peux aussi interdire à Google d'indexer les pages .php dans le fichier robots.txt, mais je n'ai pas envie de perdre le bénéfice du référencement et le pr des pages, donc je tiens à ce que le robot sache que ce sont bien toujours les mêmes pages...

Quelqu'un aurait une idée ?

Merci !


sietjp
WRInaute impliqué
WRInaute impliqué
 
Messages: 624
Inscription: 14 Déc 2003

Re: Url Rewriting : La boucle sans fin de la mort.

Message le Jeu Jan 13, 2005 18:30

personellement je conseille de rajouter un paramètre au php découlant du html et de faire une redirection dans le php uniquement si ce paramètre est présent avec header(...).

.htaccess
Code: Tout sélectionner
RewriteEngine On
RewriteBase /

RewriteRule   ^index\.html$ /index\.php?rewrite=1 [L]


PHP
Code: Tout sélectionner
if ($rewrite!=1) {
    header("301 etc...");
    header("Location etc...");
}


[edit] $rewrite!=1

lesnouvelles
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 6 Jan 2005

Message le Ven Jan 14, 2005 10:31

En fait mon problème est inverse : l'appel du html et sa réécriture en php marche bien, mais le problème est lorsqu'on appelle directement la page php... c'est là que je voudrais faire une redirection permanente vers la page html sans entrer dans une boucle sans fin lors de la ré-réécriture en php. Je pense que si seulement le flag [L] faisait son boulot chez moi, ça devrait marcher, non ? :(

Ou alors j'ai raté quelque chose dans ton code :)

Merci en tout cas !

lesnouvelles
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 6 Jan 2005

Message le Ven Jan 14, 2005 14:26

Bon, je me réponds tout seul, ça pourra aider du monde :

la solution consiste à passer une variable à la première réécriture et à ne procéder à la seconde que si cette variable n'est pas mise.

Ex :
Code: Tout sélectionner
RewriteRule   ^index\.html$ /index.php [L,E=OK:1]

RewriteCond %{ENV:REDIRECT_OK} !=1
RewriteRule   ^index\.php$ /index\.html [R=301]


Tout le secret était de savoir qu'on peut passer des variables d'un appel à l'autre...
Dernière édition par lesnouvelles le Ven Jan 14, 2005 18:40, édité 1 fois.


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Ven Jan 14, 2005 14:36

Je suis tombé sur cette discution fort interressante sur les boucles d url rewriting, je vous conseille de lire l article en entier :-)

http://forum.les-basics-nfrance.com/rea ... 85&t=36385

joxp
WRInaute discret
WRInaute discret
 
Messages: 82
Inscription: 20 Juil 2006

Re:

Message le Jeu Fév 25, 2010 9:20

ça a résolu également mon problème, mais je ne comprends pas le lien entre

RewriteRule ^index\.html$ /index.php [L,E=OK:1]
# et
RewriteCond %{ENV:REDIRECT_OK} !=1
RewriteRule ^index\.php$ /index\.html [R=301]

joxp
WRInaute discret
WRInaute discret
 
Messages: 82
Inscription: 20 Juil 2006

Re: Url Rewriting : La boucle sans fin de la mort.

Message le Jeu Fév 25, 2010 10:03

apres quelques recherche, j'ai trouvé :


RewriteRule ^index\.html$ /index.php [L,E=maVar:1]

RewriteCond %{ENV:REDIRECT_maVar} !=1
RewriteRule ^index\.php$ /index\.html [R=301]


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités