301 Přesměrovat na novou doménu s nějakou konkrétní Url

0

Otázka

Viděl jsem podobná témata, ale nemohl najít praktickou odpověď na můj problém.

Jsem pohybující se můj starý web do nového, a některé adresy Url se mění.

Rád bych, aby se obecný 301 přesměrování na novou doménu (protože většina cest jsou stejné), zatímco individuálně přesměrování adresy Url.

Zde je to, co mám na starých webových stránkách .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>

Ale 301 přesměrování na : https://new.com/custom/url místo https://new.com/my-custom-url

Některé z mých adres Url mají také parametry adresy URL bych jako přesměrování, jako je :

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

nezdá se, že pracovat stejně dobře.

Děkuji moc za vaši pomoc.

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

Nejlepší odpověď

2

Ale 301 přesměrování na : https://new.com/custom/url místo https://new.com/my-custom-url

To je proto, že vaše specifické pravidlo přesměrování se zobrazí po generic. Navíc jste míchání mod_rewrite pravidla s mod_alias pravidla a ty jsou uplatňovány v různých časech.

Mám to takhle:

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

Funguje to, děkuji. Mám další otázku : Jak mohu přesměrovat URL parametry individuálně, místo toho, aby obecné pravidlo ? Například "old.com/brand.php?name=Example" "new.com/brand/example" A "old.com/brand.php?name=Example2" "new.com/example2" ?
Malcom

Omlouvám se, nejsem si jistý, jak to použít. Zkoušel jsem : RewriteCond %{THE_REQUEST} /brand\.php\?name=([mybrandname) [NC] RewriteRule ^ https://new.com/brands/mybrandname [R=301,L,NE] Který vrací chybu 500
Malcom

Možná jsem se nevyjádřil dost jasně, ale každý brand.php?name=something musí být přesměrováni na individuální adresy URL. Nejsem si jistý, jak upravit váš příklad odpovídajícím způsobem. brand.php?name=brand1 musí být přesměrováni na new.com/product-category/brand1 a brand.php?name=brand2 musí být přesměrováni na new.com/brand2 (pro příklad)
Malcom

To /product-category/ je nový přírůstek, který nebyl pokrytý původní požadavek. Současné pravidlo je obecné, takže brand.php?name=anything bude přesměrován na new.com/anything. Nějaké konkrétní případy, můžete vyladit sami tím, že mění: RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
anubhava

Zkontrolujte, zda moje aktualizováno odpověď nyní vidět, specifických a obecných pravidel přesměrování
anubhava

To je perfektní, děkuji moc za váš čas a vaši pomoc.
Malcom

V jiných jazycích

Tato stránka je v jiných jazycích

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