.htaccess 301 redirecionamento de uma única página
-
07-07-2019 - |
Pergunta
Após o redesenho do site, tenho algumas páginas que precisam ser redirecionadas. Tudo fica no mesmo domínio, apenas algumas coisas foram reorganizadas e/ou renomeadas. Eles são da forma:
/Contact.php
é agora:
/Contact-Us.php
Usando o arquivo .htaccess, adicionei esta linha, que é a que mais considero recomendada:
RedirectMatch 301 /contact.php /contact-us.php
Isso é principalmente bom - faz o trabalho - o problema é que também redireciona:
- /team1/contact.php
- /non-existant-dolder/contact.php
Existe uma maneira de especificar que eu só quero redirecionar o contato.php na raiz?
Solução
RedirectMatch
usa uma expressão regular que corresponde ao caminho da URL. E sua expressão regular /contact.php
apenas significa Qualquer caminho de URL que contenha /contact.php
Mas não apenas Qualquer caminho de URL que seja exatamente /contact.php
. Portanto, use as âncoras para o início e o final da string (^
e $)
:
RedirectMatch 301 ^/contact\.php$ /contact-us.php
Outras dicas
Isso deve servir
RedirectPermanent /contact.php /contact-us.php
redirect 301 /contact.php /contact-us.php
Não faz sentido usar a regra RedirectMatch e depois escrever seus links para que sejam correspondentes exatos. Se você não incluir, não precisa excluir! Basta usar o Redirect sem correspondência e depois usar links normalmente
Você também pode usar um Reescriture Se você deseja a capacidade de modelar a correspondência e redirecionar URLs.
Se você preferir usar o Solução mais simples possível para um problema, uma alternativa a RedirectMatch é o mais básico, Redirecionar diretivo.
Ele não usa a correspondência de padrões e, portanto, é mais explícito e mais fácil para os outros entendem.
ou seja
<IfModule mod_alias.c>
#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php
</IfModule>
Strings de consulta devem ser transportadas porque os documentos dizem:
Informações adicionais para o caminho além do caminho URL correspondente serão anexadas ao URL de destino.
Ele redirecionará a página da sua loja para a sua página de contato
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Redirect 301 /storepage /contactpage
</IfModule>