Comment éviter un redirection loop ?

  • Auteur de la discussion Auteur de la discussion kaoul
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Afin d'avoir des URL propres, j'ai placé dans un htaccess cette ligne :
Code:
RewriteRule ^shop/([0-9]{1,3})-.*$ index.php?option=com_virtuemart&page=shop.browse&category_id=$1 [L]
Qui est sensée remplacer un /shop/9-jolis-mots-cles par l'url que le cms comprend. Cependant je ne veux pas que le visiteur (surtout google) ai connaissance de cette url "interne" sans importance pour lui. Jusqu'à maintenant, ça marche.

En plus, j'ai mis du php qui lorsqu'un crawler arrive sur l'url "interne", moche, fait un :
Code:
header('HTTP/1.1 301 Moved Permanently', false, 301);
Est sensé rediriger en 301 vers /shop/9-jolis-mots-cles. Jusqu'à maintenant, ça marche.

Le problème, c'est que ça fait 2 redirections, ce que certains appellent un "redirection loop". Est-il possible de faire en sorte que la ligne du htaccess fasse une redirection invisible du visiteur, afin que de son point de vue il n'y ai qu'une redirection maximum (du genre une option avec le [L]) ?

Car j'ai fais un wget et je vois bien s'afficher les 2 redirections (même si personnellement, j'estime que 2 != loop)...

D'avance merci beaucoup de vos solutions.
 
Nouveau WRInaute
Je déterre ce topic car plusieurs mois plus tard, mon problème n'est pas résolu.

"Est-il possible de faire en sorte que la ligne du htaccess fasse une redirection invisible du visiteur ?"

Car je viens de vérifier avec wget, même en commentant le code php qui fait le 301 la seule ligne
Code:
RewriteRule ^shop/([0-9]{1,3})-.*$ index.php?option=com_virtuemart&page=shop.browse&category_id=$1 [L]
Envoie une 301... Je ne comprend pas pourquoi !

Code:
301 Moved Permanently
Emplacement: http://www.exemple.com/index.php?option=com_virtuemart&page=shop.product_details[...]

Que faut-il ajouter avec le [L] pour que apache redirige en INTERNE sans que l'utilisateur ne sache que l'url est redirigée ?
 
Discussions similaires
Haut