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?

Foi útil?

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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top