301 Przekierowanie na nową domenę z pewnymi określonymi adresami URL

0

Pytanie

Widziałem podobne tematy, ale nie mogłem znaleźć praktyczne odpowiedzi na swój problem.

Przesunąłem swój stary stronę na nowy, i niektóre adresy URL zmieniają się.

Chciałbym zrobić całkowita przekierowanie 301 na nową domenę (bo większość dróg są takie same), przy czym osobno przekierowanie niektóre adresy URL.

Oto, co mam na moim starym miejscu .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 powinieneś trafić na : https://new.com/custom/url zamiast https://new.com/my-custom-url

Niektóre z moich adresów URL oraz mają parametry adresu URL, które chciałbym przekierować, takie jak :

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

które, jak się wydaje, też nie działają.

Bardzo wam dziękuję za pomoc.

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

Najlepsza odpowiedź

2

Ale 301 powinieneś trafić na : https://new.com/custom/url zamiast https://new.com/my-custom-url

Dzieje się tak dlatego, że twoje konkretną regułę przekierowania pojawia się po wspólnego. Ponadto, mieszasz reguły mod_rewrite z zasadami mod_alias, i są one wywoływane są w różnym czasie.

Niech to będzie tak:

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

To działa, dziękuję. Mam jeszcze jedno pytanie : jak mogę przekierować parametry URL osobno, a nie ogólna zasada ? Na przykład "old.com/brand.php?name=Example" dla "new.com/brand/example" I "old.com/brand.php?name=Example2" by "new.com/example2" ?
Malcom

Przepraszam, nie wiem, jak to wykorzystać. Próbowałem : RewriteCond %{THE_REQUEST} /brand\.php\?name=([mybrandname) [NC] RewriteRule ^ https://new.com/brands/mybrandname [R=301,L,NE] Która zwraca błąd 500
Malcom

Być może nie było to wystarczająco jasne, ale każdy brand.php?name=something należy przekierować na inny adres URL. Nie jestem pewien, jak odpowiednio edytować swój przykład. brand.php?name=brand1 należy przekierować na new.com/product-category/brand1 i brand.php?name=brand2 należy przekierować na new.com/brand2 (na przykład)
Malcom

Ten /product-category/ jest to nowy dodatek, który nie został włączony do pierwotnego roszczenia. Aktualna zasada jest wspólne, więc brand.php?name=anything zostanie przekierowany na new.com/anything. Wszelkie konkretne przypadki, które można skonfigurować samodzielnie, zmieniając: RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
anubhava

Sprawdź mój zaktualizowany odpowiedź teraz, aby zobaczyć konkretne i ogólne zasady przekierowania
anubhava

To świetnie, dziękuję bardzo za poświęcony czas i pomoc.
Malcom

W innych językach

Ta strona jest w innych językach

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