301 Redirect para o novo domínio com alguns URLs específicos

0

Pergunta

Eu vi tópicos semelhantes, mas não conseguia encontrar uma resposta prática para o meu problema.

Eu estou mudando o meu site antigo para um novo, e algumas URLs estão mudando.

Eu gostaria de fazer um genérico 301 redirecionamento para o novo domínio (porque a maioria dos caminhos são os mesmos), embora individualmente redirecionamento de URLs.

Aqui está o que eu tenho no meu antigo site .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>

Mas os redirecionamentos 301 para : https://new.com/custom/url em vez de https://new.com/my-custom-url

Alguns dos meus URLs também têm parâmetros de URL, eu gostaria de redirecionar, tais como :

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

que não parecem funcionar bem.

Muito obrigado por sua ajuda.

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

Melhor resposta

2

Mas os redirecionamentos 301 para : https://new.com/custom/url em vez de https://new.com/my-custom-url

É porque o seu específico de regras de redirecionamento aparece depois de um genérico. Além disso, você está misturando o mod_rewrite regras com mod_alias regras e estas são invocados em épocas diferentes.

Temos assim:

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

Ele está trabalhando, obrigado. Eu tenho outra pergunta : Como posso redirecionar a URL parâmetros individualmente, em vez de uma regra genérica ? Por exemplo, "old.com/brand.php?name=Example" a "new.com/brand/example" E "old.com/brand.php?name=Example2" a "new.com/example2" ?
Malcom

Me desculpe, eu não tenho certeza de como usar esse. Eu tentei : RewriteCond %{THE_REQUEST} /brand\.php\?name=([mybrandname) [NC] RewriteRule ^ https://new.com/brands/mybrandname [R=301,L,NE] Que retorna um erro 500
Malcom

Talvez eu não estava claro o suficiente, mas a cada brand.php?name=something deve ser redirecionado para uma URL individual. Eu não tenho certeza de como editar o seu exemplo de acordo. brand.php?name=brand1 deve ser redirecionada para new.com/product-category/brand1 e brand.php?name=brand2 deve ser redirecionada para new.com/brand2 (por exemplo)
Malcom

Este /product-category/ é novidade que não foi abrangida no requisito original. Atual regra é genérica para brand.php?name=anything será redirecionado para o new.com/anything. Quaisquer casos específicos, você pode ajustar-se alterando: RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC]
anubhava

Verifique a minha resposta atualizado agora para ver genéricos e específicos regras de redirecionamento
anubhava

Ele é perfeito, muito obrigado pelo seu tempo e de sua ajuda.
Malcom

Em outros idiomas

Esta página está em outros idiomas

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