web-dev-qa-db-fra.com

Wild card redirect dans htaccess donnant une erreur cette page Web a une boucle de redirection

Sur mon site Web, j'ai changé le nom du répertoire "véhicules-voitures" en "véhicules-voitures-à-vendre". Lorsque j'ai essayé de rediriger en utilisant une redirection générique de mon ancien nom de répertoire vers un nouveau nom de répertoire dans mon compte cPanel d'hébergement Web, j'obtiens une erreur chaque fois que j'ouvre des pages de ce répertoire:

cette page web a une boucle de redirection

Le site web est php.

Le problème est que j'ai beaucoup de pages avec l'ancien répertoire indexé dans Google et qu'elles obtiennent un contenu en double.

J'ai vraiment besoin de conseils sur ce qu'il faut faire avec ce problème.

Voici le code du fichier .htaccess pour la redirection, merci.

RewriteEngine on

RewriteCond %{HTTP_Host} ^adsbuz\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.adsbuz\.com$

RewriteRule ^vehicles\-cars\/?(.*)$ "http\:\/\/adsbuz\.com\/vehicles\-cars\-for\-sale\/$1" [R=301,L]
3
kath

premièrement, votre redirection est dans une boucle infinie à cause du point d'interrogation après -cars /?

voitures /? (. *)

l'opérateur de point d'interrogation signifie optionnel, en ce sens qu'il peut y avoir ou non une barre oblique après -cars. Disons donc que votre ancienne URL est/véhicules-voitures/23. Avec la règle telle que vous la connaissez,/véhicules-voitures/23 correspondances et redirige vers véhicules-voitures-à-vendre/23 et les recharges de page. Mais alors/véhicules-voitures-à-vendre/23 allumettes à nouveau puisque le/peut être facultatif, son "pour la vente/23" correspondant comme (. *), De sorte que vous vous retrouvez avec/véhicules-voitures-à-vendre/-pour-vente/23, puis recharges et correspond à nouveau pour/véhicules-voitures-à-vendre/-pour-vente/-pour-vente/23 et ainsi de suite à l'infini, car il continuera toujours à correspondre. Changement /? to/et cela devrait arrêter la boucle infinie.

deuxièmement, vous n'avez pas besoin d'échapper à tout ce que vous avez ici. Il faut échapper à Dot (.) Car sa signification non échappée est un caractère générique unique, mais les tiret (-) et la barre oblique (/) n'ont pas de signification spéciale et ne doivent donc pas être échappés. Et les citations ne devraient pas être nécessaires à moins qu'il y ait des espaces dans l'URL (une mauvaise idée pour commencer). Vous pouvez aussi combiner les 2 conditions de correspondance de domaine en 1 en faisant le www. groupe optionnel. Au lieu d'essayer ceci:

RewriteEngine on

RewriteCond %{HTTP_Host} ^(www\.)?adsbuz\.com$    
RewriteRule ^vehicles-cars/(.*)$ http://adsbuz.com/vehicles-cars-for-sale/$1 [R=301,NC,L]

si vous avez besoin des -cars /? conditionnel pour certaines URL qui n'ont pas/après -cars, postez d'autres exemples d'URL et je peux vous aider à les transmettre correctement.

2
WebChemist