301 Redirect la domeniu nou cu unele Url-uri specifice

0

Problema

Am vazut subiecte similare, dar nu a putut gasi un raspuns practic la problema mea.

Îmi mut site-ul vechi cu unul nou, iar unele Url-uri sunt în schimbare.

Aș dori să fac un generic 301 de redirecționare către noul domeniu (pentru că cele mai multe trasee sunt la fel), în timp ce individual redirecționarea Url-uri.

Aici este ce am eu pe site-ul vechi .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>

Dar 301 redirecționări către : https://new.com/custom/url în loc de https://new.com/my-custom-url

Unele Url-uri au, de asemenea, parametrii URL aș dori să redirect, cum ar fi :

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

care nu par să funcționeze la fel de bine.

Vă mulțumesc foarte mult pentru ajutor.

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

Cel mai bun răspuns

2

Dar 301 redirecționări către : https://new.com/custom/url în loc de https://new.com/my-custom-url

Este pentru dvs. specifice redirecționare de regulă apare după generic. Mai mult decât atât, se amesteca mod_rewrite reguli cu mod_alias reguli și acestea sunt invocate la momente diferite.

Au asa:

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

Este de lucru, vă mulțumesc. Am o altă întrebare : Cum pot redirecționa parametri URL individual, în loc de un generic regula ? De exemplu "old.com/brand.php?name=Example" a "new.com/brand/example" ȘI "old.com/brand.php?name=Example2" a "new.com/example2" ?
Malcom

Îmi pare rău, eu nu sunt sigur cum să folosească acest lucru. Am incercat : RewriteCond %{THE_REQUEST} /brand\.php\?name=([mybrandname) [NC] RewriteRule ^ https://new.com/brands/mybrandname [R=301,L,NE] Care returnează o eroare 500
Malcom

Poate nu am fost suficient de clar, dar de fiecare brand.php?name=something trebuie să fi redirecționat către un individ URL-ul. Nu sunt sigur cum să editați exemplu în consecință. brand.php?name=brand1 trebuie să fi redirecționat către new.com/product-category/brand1 și brand.php?name=brand2 trebuie să fi redirecționat către new.com/brand2 (de exemplu)
Malcom

Asta /product-category/ este nou, plus că nu a fost acoperit în original cerință. Regula actuală este atât de generic brand.php?name=anything va fi redirecționat către new.com/anything. Cazurile specifice pe care le puteți tweak-te de schimbare: RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
anubhava

Mi verific actualizat răspunde acum pentru a vedea specifice și generice regulile de redirecționare
anubhava

E perfect, vă mulțumesc foarte mult pentru timpul si ajutorul tau.
Malcom

În alte limbi

Această pagină este în alte limbi

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