Redireciona uma ou mais URL para apenas uma, com expressões regulares

2

No meu site, tenho algumas páginas que podem ser acessadas por dois URLs:

  • ... / page
  • ... / parâmetro / página

Para otimizar o site para os mecanismos de pesquisa, preciso redirecionar todos os URLs ... / page para ... / parameter / page urls.

Como posso alcançar isso modificando o arquivo .htaccess?

    
por Marco Panichi 01.01.2013 / 16:22

1 resposta

1

Para que o redirecionamento seja executado com o comportamento desejado, implemente uma regra de reescrita semelhante à incluída abaixo:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(/(special|cases|which|should|be|excluded)/) [NC]
RewriteRule /(.*) http://www.example.com/parameter/$1 [L,R=301]

Uma solução para o problema mais específico mencionado no comentários (ou seja, redirecionar todas as páginas que não têm um contexto específico para usar o contexto 'en') seria algo semelhante à seguinte reescrita:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(/(en|it|de|fr)/) [NC]
RewriteRule /(.*) http://www.example.com/en/$1 [L,R=301]

Observe que qualquer diretório de idioma adicional ao qual a regra de reescrita não deve se aplicar precisará ser adicionado à cláusula de escape no RewriteCond.

Além disso, uma vez que isso tenha sido posto em prática, um gracioso terá que ser emitido no Apache, a fim de pegar as mudanças.

    
por 01.01.2013 / 18:43