301 Bazı belirli url'lerle yeni etki alanına yönlendirme

0

Soru

Benzer konuları gördüm ancak sorunuma pratik bir cevap bulamadım.

Eski web sitemi yenisine taşıyorum ve bazı URL'ler değişiyor.

Bazı URL'leri ayrı ayrı yönlendirirken, yeni etki alanına genel bir 301 yönlendirmesi yapmak istiyorum (çoğu yol aynı olduğundan).

İşte eski web sitemde olan şey .htaccessname :

<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>

Ancak 301 yönlendirir : https://new.com/custom/url bunun yerine https://new.com/my-custom-url

Url'lerimden bazıları, yönlendirmek istediğim URL parametrelerine de sahiptir, örneğin :

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

iyi çalışmak için görünmüyor.

Yardımlarınız için çok teşekkür ederim.

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

En iyi cevabı

2

Ancak 301 yönlendiriyor : https://new.com/custom/url yerine https://new.com/my-custom-url

Bunun nedeni, özel yönlendirme kuralınızın genel kuraldan sonra görünmesidir. Ayrıca, mod_rewrite kurallarını mod_alias kurallarıyla karıştırıyorsunuz ve bunlar farklı zamanlarda çağrılıyor.

Böyle olsun:

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

Bu çalışma, teşekkür ederim. Başka bir sorum var: URL parametrelerini genel bir kural yerine tek tek nasıl yönlendirebilirim ? Örneğin "old.com/brand.php?name=Example" kime "new.com/brand/example" VE "old.com/brand.php?name=Example2" kime "new.com/example2"?
Malcom

Ben üzgünüm, emin değilim ne kadar yararlı olur. Denedim : RewriteCond %{THE_REQUEST} /brand\.php\?name=([mybrandname) [NC] RewriteRule ^ https://new.com/brands/mybrandname [R=301,L,NE] 500 hatası döndüren
Malcom

Belki yeterince açık değildim, ama her brand.php?name=something tek bir URL'ye yönlendirilmelidir. Örneğinizi buna göre nasıl düzenleyeceğinizden emin değilim. brand.php?name=brand1 yönlendirilmesi gerekir new.com/product-category/brand1 ve brand.php?name=brand2 yönlendirilmesi gerekir new.com/brand2 (mesela)
Malcom

Bu /product-category/ bu, orijinal gereksinime dahil olmayan yeni bir eklentidir. Mevcut kural geneldir, bu yüzden brand.php?name=anything yönlendirilecek new.com/anything. Değiştirerek kendiniz ayarlayabileceğiniz belirli durumlar: RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
anubhava

Belirli ve genel yönlendirme kurallarını görmek için güncellenmiş cevabımı şimdi kontrol edin
anubhava

Mükemmel, zaman ayırdığınız ve yardımlarınız için çok teşekkür ederim.
Malcom

Diğer dillerde

Bu sayfa diğer dillerde

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