Aller au contenu

.htaccess: 301 spécifiques et 301 pour le reste du site


shivapat
Aller à la solution Solutionné par Dan,

Sujets conseillés

Bonjour,

Nous avons mis en ligne le nouveau site d'un client (ancien site: www.pccannes.com - nouveau site www.parachute-club-cannes.com). L'ancien site n'avait pas de réécriture d'url et ont donc un format rempli de paramètres.

Nous souhaitons mettre en place des redirections spécifiques pour les pages principales (une 10aine) et une redirection générale pour les autres url (qq milliers) afin qu'elles renvoient vers l'accueil du nouveau site. Nous avons passé pas mal de temps à éplucher le forum et d'autres ressources mais n'avons pas trouvé de réponse concrète à notre problème.

Si nous partons sur un schéma classique, nous redirigeons d'un domaine vers l'autre et les redirections spécifiques ne seront pas prises en compte:

RewriteEngine on# Redirect to another domain: www.parachute-club-cannes.com.RewriteCond %{HTTPS} offRewriteCond %{HTTP_HOST} !^(www\.)?parachute\-club\-cannes\.com$ [NC]RewriteRule .* http://www.parachute-club-cannes.com%{REQUEST_URI}[R=301,L]# Same for HTTPS:RewriteCond %{HTTPS} onRewriteCond %{HTTP_HOST} !^(www\.)?parachute\-club\-cannes\.com$ [NC]RewriteRule .* https://www.parachute-club-cannes.com%{REQUEST_URI}[R=301,L]# 301 Redirect URLs.Redirect 301 /www.pccannes.com http://www.parachute-club-cannes.comRedirect 301 /www.pccannes.com/index.php?option=com_content&view=article&id=56&Itemid=56 http://www.parachute-club-cannes.com/sauter-en-tandem(...)


Quelle est la meilleure méthode pour rediriger proprement les pages principales vers leurs pages correspondantes et toutes les autres pages vers l'accueil du nouveau site?

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Pour rediriger une URL avec QUERY_STRING, il faut utiliser cette syntaxe, parce que ta dernière ligne "Redirect 301..." ne fonctionnera pas :

RewriteCond %{HTTP_HOST} pccannes.comRewriteCond %{QUERY_STRING} option=com_content&view=article&id=56&Itemid=56RewriteRule .* http://www.parachute-club-cannes.com/sauter-en-tandem? [R=301,L]
Le ? final évite d'ajouter le QUERY_STRING qui est ajouté automatiquement pour une redirection 301 dans le cas contraire.

Merci pour ton aide, je vais modifier les redirections spécifiques en suivant cette syntaxe.

Dois-je rajouter "/" à la fin de la nouvelle url comme le "/" fait partie intégrante de la canonical?

Si j'ajoute le "/" et le "?" à la suite pour respecter la canonical et ta recommandation, est-ce que Google va conserver le "?" en indexant les nouvelles urls? si oui ceci risque de nuire à l'indexation du site.

Tu devrais commencer tes réécritures par les règles spécifiques, et terminer par la règle générale pour toutes les autres pages... et non l'inverse, comme tu le fais dans ton exemple.

Si je fais correctement mes redirections spécifiques et les mets au début du .htaccess, je peux ensuite simplement ajouter

# Redirect to another domain: www.parachute-club-cannes.com.RewriteCond %{HTTPS} offRewriteCond %{HTTP_HOST} !^(www\.)?parachute\-club\-cannes\.com$ [NC]RewriteRule .* http://www.parachute-club-cannes.com%{REQUEST_URI}[R=301,L]# Same for HTTPS:RewriteCond %{HTTPS} onRewriteCond %{HTTP_HOST} !^(www\.)?parachute\-club\-cannes\.com$ [NC]RewriteRule .* https://www.parachute-club-cannes.com%{REQUEST_URI}[R=301,L]

et toutes les autres urls seront redirigées vers le nouveau site?

J'ai lu ces docs mais j'avoue m'y perdre un peu n'étant ni un vrai dev ni un vrai sysadmin smile.gif

Lien vers le commentaire
Partager sur d’autres sites

Tu peux ajouter le / final dans la règle de réécriture,.

Le ? ne sera pas retransmis lors de la réécriture, il est juste là pour indiquer à mod_rewrite qu'il ne faut pas ajouter le QUERY_STRING

Tu peux ajouter tes règles générales après toutes les règles spécifiques

Je viens de mettre en place le .htaccess et tout fonctionne.

Une petite question, sur les urls non spécifiques (ex: http://www.pccannes.com/index.php?option=com_morfeoshow&task=view&gallery=7&Itemid=58, ça redirige bien sur le nouveau domaine mais ça garde le QUERY_STRING, pour les générales j'ai mis:


# Redirect to another domain: www.parachute-club-cannes.com.

RewriteCond %{HTTPS} off

RewriteCond %{HTTP_HOST} !^(www\.)?parachute\-club\-cannes\.com$ [NC]

RewriteRule .* http://www.parachute-club-cannes.com%{REQUEST_URI} [R=301,L]

# Same for HTTPS:

RewriteCond %{HTTPS} on

RewriteCond %{HTTP_HOST} !^(www\.)?parachute\-club\-cannes\.com$ [NC]

RewriteRule .* https://www.parachute-club-cannes.com%{REQUEST_URI} [R=301,L]

si je supprime "%{REQUEST_URI}" et ajout "/" est-ce que c'est ok?

Lien vers le commentaire
Partager sur d’autres sites

SI tu ne veux pas garder le QUERY_STRING il faut mettre ? en fin du second argument.



Si tu veux que toutes ces anciennes URLS pointent vers la racine du nouveau domaine, ne mets pas le REQUEST_URI !



Par exemple :



RewriteRule .* http://www.parachute-club-cannes.com/? [R=301,L]
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...