Apache mod_rewrite adicionando barra extra no final do URL

Apache mod_rewrite adicionando barra extra no final do URL

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

OBSERVAÇÃO:Estou usando um VPS com acesso root total, 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 o URL será gravado emhttp://aaronjwood.com//(observe as duas barras) ouhttp://aaronjwood.com//contact.php. Alguém pode me ajudar a descobrir por que isso está acontecendo?

Responder1

Como está em seu arquivo de configuração principal, e não em um diretório por diretório ( <Directory>ou .htaccess), a barra inicial não está sendo removida para fins de 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 considerar o fato de que a barra inicial está incluída na string que você está combinando:

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

Responder2

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

Outra dica: quando sozinho, ^(.*)$é igual a (.*).

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.

Oliver

informação relacionada