Apache mod_rewrite adicionando uma barra extra no final da URL

3

Estou rodando o CentOS 6.0 e estou tentando fazer o mod_rewrite remover o www de qualquer URL prefixado com ele. Aqui está o código que eu tenho no meu httpd.conf:

OBSERVAÇÃO: estou usando um VPS com acesso root completo, portanto, não estou usando arquivos .htaccess ou qualquer configuração "por diretório".

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$
RewriteRule ^(.*)$ http://aaronjwood.com/$1 [R=301,L]

Isso está funcionando bem para todas as páginas, exceto que a URL será gravada no link (observe as duas barras) ou link . Alguém pode me ajudar a descobrir por que isso está acontecendo?

    
por Aaron 21.11.2011 / 23:15

2 respostas

3

Como está no seu arquivo de configuração principal e não em um diretório ( <Directory> ou .htaccess ), a barra inicial não está sendo removida para o contexto. Na verdade, está adicionando (ou tentando adicionar - não tenho certeza se o Apache está removendo o extra na maioria dos casos, ou se o navegador do cliente está) a segunda barra para cada reescrita.

Basta explicar o fato de a barra inicial estar incluída na string que você está correspondendo:

RewriteRule ^/(.*)$ http://aaronjwood.com/$1 [R=301,L]
    
por 21.11.2011 / 23:19
4

Como está diretamente em um vhost, aqui está a solução: remova a barra aqui: http://aaronjwood.com$1

Outra dica: quando sozinho, ^(.*)$ é o mesmo que (.*) .

Então aqui está a solução:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$
RewriteRule (.*) http://aaronjwood.com$1 [R=301,L]

Por favor, me diga se funcionou.

Olivier

    
por 21.11.2011 / 23:35