Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1770 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  URL rewriting récalcitrante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

URL rewriting récalcitrante

n°1703980
bagu
Posté le 18-03-2008 à 12:07:19  profilanswer
 

Bonjour,
 
Je suis en train d'essayer de mettre en place de l'url rewriting pour un site que je maintient et qui a changé récemment d'url.
Les principes de fonctionnements sont les suivants :
 
adfi.dyndns.org doit être renvoyé vers www.adfi.info
adfi.info doit être renvoyé vers www.adfi.info
accueil.html doit être compris pas le serveur comme étant index.php?id=accueil (accueil est un exemple)
et index.php?id=accueil doit être réécrit en accueil.html (accueil est un exemple)
 
Hors, pour le moment, tout marche sauf un cas de figure :

Code :
  1. Si je tape :
  2. http://adfi.dyndns.org/accueil.html
  3. j'ai ceci qui apparait :
  4. http://www.adfi.info/index.php?id= [...] fo/accueil


 

Code :
  1. Alors que si j'ai :
  2. http://adfi.info/accueil.html
  3. J'ai bien ceci :
  4. http://www.adfi.info/accueil.html


 

Code :
  1. De même, si je tape :
  2. http://adfi.info/index.php?id=accueil
  3. J'ai :
  4. http://www.adfi.info/index.php?id=accueil
  5. Au lieu de :
  6. http://www.adfi.info/accueil.html


 
Voici le contenu de mon .htaccess :

Code :
  1. RewriteBase /
  2. RewriteRule adfi.dyndns.org www.adfi.info [R=301,L]
  3. RewriteRule ^(.*).html$ /index.php?id=$1  [L]
  4. RewriteRule ^adfi.info/(.*)$ www.adfi.info/$1 [R=301,L]


 
Y aurait-il une âme charitable pour m'aider, car j'ai du mal à avancer (c'est obscure l'url rewriting)
 
Merci


Message édité par bagu le 18-03-2008 à 12:08:28
mood
Publicité
Posté le 18-03-2008 à 12:07:19  profilanswer
 

n°1704050
FlorentG
Unité de Masse
Posté le 18-03-2008 à 13:54:46  profilanswer
 

Oublie pas de mettre un [QSA] dans la dernière RewriteRule pour que les paramètres soit ajoutés

n°1704051
FlorentG
Unité de Masse
Posté le 18-03-2008 à 13:55:59  profilanswer
 

Et surtout pas de R=301, parce que sinon l'url avec le paramètre sera affiché dans le navigateur. C'est seulement en interne que tu dois cibler index.php?id=machin, pas côté navigateur

n°1704108
bagu
Posté le 18-03-2008 à 14:47:47  profilanswer
 

J'ai modifié comme cela :  
 

Code :
  1. RewriteBase /
  2. RewriteRule ^(.*).html$ index.php?id=$1
  3. RewriteRule ^(.*)index.php?id=(.*)$ http://www.adfi.info/$1.html [R=301]
  4. RewriteCond %{HTTP_HOST} ^adfi.dyndns.org$
  5. RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
  6. RewriteCond %{HTTP_HOST} ^adfi.info$
  7. RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]


 
Cela réponds à tout les critères, sauf un...
La ligne RewriteRule ^(.*)index.php?id=(.*)$ http://www.adfi.info/$1.html [R=301] ne semble pas correcte ou pas interprètée...
 
Mon idée est la suivante :
J'indique que http://hote/truc.html = http://hote/index.php?id=truc (cela marche actuellement)
Si l'utilisateur tape http://hote/index.php?id=truc il faut réécrire cela en http://hote/truc.html (cela ne marche pas)
Une fois ces deux critères remplis, je teste l'hôte afin de le corriger au besoin de la manière suivante :
Si l'utilisateur écrit http://bidule.com , je réécris cela afin d'avoir http://www.bidule.com...Tout en conservant les paramètres qui suivent et qui, après les traitement précédent, doivent être de forme truc.html (ça semble marcher aussi)
Si l'utilisateur écrit http://bidule.dyndns.org , je réécris cela afin d'avoir http://www.bidule.com...Tout en conservant les paramètres qui suivent et qui, après les traitement précédent, doivent être de forme truc.html (ça semble marcher aussi)
 
Du coup, je n'ai pas compris pourquoi mettre QSA ni pourquoi supprimer R=301...Car je souhaite indiquer à google (entre autre) que le lien http://adfi.dyndns.org n'existe plus.
 
Merci

n°1704119
FlorentG
Unité de Masse
Posté le 18-03-2008 à 15:03:04  profilanswer
 

bagu a écrit :

La ligne RewriteRule ^(.*)index.php?id=(.*)$ http://www.adfi.info/$1.html [R=301] ne semble pas correcte ou pas interprètée...


Il est impossible de matcher la query string (donc ce qui est après le ?). Cette ligne ne peut pas fonctionner.  
 

bagu a écrit :

Si l'utilisateur tape http://hote/index.php?id=truc il faut réécrire cela en http://hote/truc.html (cela ne marche pas)


Ah ben voilà le problème : ce que tu veux faire est impossible, mod_rewrite ne sert pas à ça (ça risque en plus de devenir trop complexe)

n°1704150
bagu
Posté le 18-03-2008 à 16:14:27  profilanswer
 

Merci à toi pour tes réponses...
 
Je vais donc faire sans...En espérant qu'une version hypothétique du mod rewrite puisse le faire un jour futur.
 
Même si je trouve quand même vachement frustrant le fait que quand je tape :
http://adfi.dyndns.org/prestations.html
 
cela se transforme en :
http://www.adfi.info/index.php?id=prestations
 
Et non en :
http://www.adfi.info/prestations.html
 
Ha ben en fait, le problème que je vient d'évoquer est résolu par :

Code :
  1. RewriteBase /
  2. RewriteCond %{HTTP_HOST} ^adfi.dyndns.org$
  3. RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
  4. RewriteCond %{HTTP_HOST} ^adfi.info$
  5. RewriteRule ^(.*)$ http://www.adfi.info/$1 [R=301,L]
  6. RewriteRule ^(.*).html$ index.php?id=$1


Message édité par bagu le 18-03-2008 à 16:21:25
n°1704174
FlorentG
Unité de Masse
Posté le 18-03-2008 à 16:41:49  profilanswer
 

Ouais le problème c'est que tu faisais une redirection après le RewriteRule, alors qu'il ne faut pas :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  URL rewriting récalcitrante

 

Sujets relatifs
[url rewriting] "404" se transforme tout seul en "html"...IE7 attraper l'erreur "URL trop longue"
extraction d'adresse mail à partir d'un URLUrl rewriting et passage de parametres
[Apache-WAMP] Pb rewriting ("Request exceeded the limit of 10 ...")Code php pour url rewriting : est ce la meilleur solution
[Resolu]Url rewriting qui ralentit mon siteUrl Rewriting
Plus de sujets relatifs à : URL rewriting récalcitrante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR