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