Remova o “www” do domínio com o Apache2 para HTTPS?

2

Acabou de instalar um novo servidor 12.04 ubuntu.

Sempre usei o redirecionamento padrão para remover www, mas parecia que ele não suportava https, então comecei a procurar. Tentei tudo o que encontrei & de alguma forma, a remoção do http "www" funciona bem, mas o https não redireciona.

Aqui está o que eu uso (em um arquivo bp_rewrite.conf em /etc/apache2/conf.d):

# Rewrite "www.example.com -> example.com"

<IfModule mod_rewrite.c>
  RewriteCond %{HTTP_HOST} ^www\.(.+)
  RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
  RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
</IfModule>

Alguém já experimentou isso?

    
por Olivier 26.07.2012 / 17:59

2 respostas

2

Seu código de exemplo parece um pouco complicado, mas muito próximo do que eu uso:

    RewriteCond %{HTTPS}s%{HTTP_HOST} ^(on(s)|offs).+\.(.+\..+)$
    RewriteRule ^(.*)$ http%2://%3$1 [R=301]

Nota: Isso simplesmente rasga qualquer coisa na frente das duas últimas partes do nome de domínio. Assim, o usuário pode inserir what.the.example.com e reduzi-lo para example.com . Se o seu nome de domínio for example.co.uk ou algo com três partes, o final da primeira linha teria que ser modificado para caber.

    
por 26.07.2012 / 20:55
1

Para que RewriteRule seja acionado, as duas diretivas RewriteCond precisam ser verdadeiras.

Que tal isso:

<IfModule mod_rewrite.c>
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [OR]
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
</IfModule>

Agora, se apenas uma das condições permanecer verdadeira (como no caso de https://www.example.com/ , em que apenas a primeira condição é verdadeira), o RewriteRule é aplicado

    
por 26.07.2012 / 20:10