Redirection 301 vers un nouveau domaine avec certains des Url spécifiques

0

La question

J'ai vu des sujets similaires, mais ne pouvait pas trouver une réponse à mon problème.

Je suis un déplacement de mon ancien site web pour un nouveau, et certaines Url sont en train de changer.

Je voudrais faire un générique redirection 301 vers le nouveau domaine (car la plupart des chemins sont les mêmes), même si, individuellement redirection des URLs.

Voici ce que j'ai sur mon ancien site web .htaccess :

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^old\.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www\.old\.com$
  RewriteRule (.*)$ https://new.com/$1 [R=301,L]

  Redirect 301 "/custom/url/" "https://new.com/my-custom-url"
</IfModule>

Mais les redirections 301 pour : https://new.com/custom/url au lieu de https://new.com/my-custom-url

Certains de mes URLs ont également des paramètres d'URL, je voudrais rediriger, tels que :

Redirect 301 "/brand.php?name=Example" "https://new.com/Example"
Redirect 301 "/brand.php?name=Example2" "https://new.com/another/url"

qui ne semblent pas fonctionner ainsi.

Merci beaucoup pour votre aide.

.htaccess redirect seo
2021-11-22 19:48:11
1

La meilleure réponse

2

Mais les redirections 301 pour : https://new.com/custom/url au lieu de https://new.com/my-custom-url

C'est parce que votre redirection règle apparaît après le générique. De plus on mélange les règles de mod_rewrite avec mod_alias règles et ceux-ci sont appelés à des moments différents.

Ont comme ceci:

RewriteEngine On

# redirect /brand.php?name=Example2 to new.com/another/Example2
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC]
RewriteCond %{QUERY_STRING} ^name=(Example2) [NC]
RewriteRule ^brand\.php$ https://new.com/another/%1? [R=301,L,NE]

# redirect /brand.php?name=Example3 to new.com/category/Example3
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC]
RewriteCond %{QUERY_STRING} ^name=(Example3) [NC]
RewriteRule ^brand\.php$ https://new.com/category/%1? [R=301,L,NE]

# generic redirect /brand.php?name=Example to new.com/Example2
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC]
RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
RewriteRule ^brand\.php$ https://new.com/%1? [R=301,L,NE]

# redirect custom URL
RewriteRule ^custom/url/ https://new.com/my-custom-url [R=301,L,NE,NC]

# redirect everything else
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC]
RewriteRule ^ https://new.com%{REQUEST_URI} [R=301,L]
2021-11-23 19:38:59

Ça fonctionne, merci. J'ai une autre question : Comment puis-je rediriger les paramètres de l'URL individuellement, au lieu d'un générique à la règle ? Par exemple "old.com/brand.php?name=Example" pour "new.com/brand/example" ET "old.com/brand.php?name=Example2" pour "new.com/example2" ?
Malcom

Je suis désolé, je ne suis pas sûr de la façon de les utiliser. J'ai essayé : RewriteCond %{THE_REQUEST} /brand\.php\?name=([mybrandname) [NC] RewriteRule ^ https://new.com/brands/mybrandname [R=301,L,NE] Qui renvoie une erreur 500
Malcom

Peut-être que je n'étais pas assez claire, mais chaque brand.php?name=something doit être redirigé vers une URL. Je ne suis pas sûr de savoir comment modifier votre exemple en conséquence. brand.php?name=brand1 doit être redirigé vers new.com/product-category/brand1 et brand.php?name=brand2 doit être redirigé vers new.com/brand2 (pour exemple)
Malcom

Cette /product-category/ est une nouvelle addition qui n'était pas couvert dans l'exigence de départ. La règle actuelle est générique brand.php?name=anything serez redirigé vers new.com/anything. Les cas spécifiques que vous pouvez modifier vous-même en train de changer: RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
anubhava

Vérifier mes mises à jour répondre maintenant à voir spécifiques et génériques rediriger les règles
anubhava

C'est parfait, je vous remercie beaucoup de votre temps et de votre aide.
Malcom

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................