301 Presmerovanie na novú doménu s niektoré konkrétne adresy Url,

0

Otázka

Videl som podobné témy, ale nemohol nájsť praktická odpoveď na môj problém.

Som pohybe mojej starej stránky na novú, a niektoré adresy Url, sa mení.

Rád by som, aby všeobecný 301 presmerovanie na novú doménu (pretože väčšina cesty sú rovnaké), zatiaľ čo individuálne presmerovanie niektorých adries Url.

Tu je to, čo som sa na moje staré stránky .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 presmerovanie na : https://new.com/custom/url namiesto https://new.com/my-custom-url

Niektoré z mojich Url majú tiež parametrami adresy URL, ktoré by som rád presmerovať, napríklad :

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

ktoré nezdá sa, že pracujú rovnako.

Ďakujem vám veľmi pekne za vašu pomoc.

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

Najlepšiu odpoveď

2

Ale 301 presmerovanie na : https://new.com/custom/url namiesto https://new.com/my-custom-url

Je to preto, že vaše konkrétne presmerovanie pravidlo sa zobrazí po generic jeden. Navyše ste miešanie mod_rewrite pravidlá s mod_alias pravidlá a tieto sa uplatňujú v rôznych časoch.

Mať to, ako je tento:

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

Je to práca, ďakujem. Mám ďalšiu otázku : Ako môžem presmerovanie URL parametre individuálne, namiesto všeobecné pravidlo ? Napríklad "old.com/brand.php?name=Example" k "new.com/brand/example" A "old.com/brand.php?name=Example2" k "new.com/example2" ?
Malcom

Ospravedlňujem sa, nie som si istý, ako používať tento. Snažil som sa : RewriteCond %{THE_REQUEST} /brand\.php\?name=([mybrandname) [NC] RewriteRule ^ https://new.com/brands/mybrandname [R=301,L,NE] Ktorá vráti chybe 500
Malcom

Možno som nebol dostatočne jasné, ale každý brand.php?name=something musí byť presmerovaný na jednotlivé adresy URL. Nie som si istý, ako môžete upraviť napr podľa toho. brand.php?name=brand1 musí byť presmerovaný na new.com/product-category/brand1 a brand.php?name=brand2 musí byť presmerovaný na new.com/brand2 (napríklad)
Malcom

Toto /product-category/ je nový prírastok, ktoré nebolo zahrnuté v pôvodnej požiadavky. Aktuálne pravidlo je všeobecný, tak brand.php?name=anything bude presmerovaný na new.com/anything. Všetky špecifických prípadoch môžete vyladiť sami zmenou: RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
anubhava

Skontrolujte, môj aktualizované odpoveď teraz sa pozrite špecifické a všeobecné pravidlá presmerovania
anubhava

Je to perfektné, ďakujem vám veľmi pekne za váš čas a vašu pomoc.
Malcom

V iných jazykoch

Táto stránka je v iných jazykoch

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