Redirecionando www para não-www (apache, letsencrypt)

2

Ubuntu 14.04 Apache 2.4.18

Eu configurei um certificado SSL usando o letsencrypt. Ele funciona bem, mas, para funcionar, não posso ter vários vhosts definidos em um arquivo de configuração virtualhost. Cada vhost tem que sentar em seu próprio arquivo .conf dentro de / etc / apache2 / sites-available.

Preciso garantir que todas as solicitações para www.example.com sejam redirecionadas para example.com. Como preciso resolvê-lo dentro do arquivo virtualhost exclusivo, estou tentando incluir uma regra de reconfiguração interna para executar o redirecionamento, mas até agora ele falha silenciosamente: As solicitações de link não estão sendo redirecionadas para o link e um aviso de "site inseguro" é exibido.

Aqui está o arquivo de configuração virtualhost para domain.com-le-ssl.conf.

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName example.com
        ServerAlias www.example.com

        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
        RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

        DocumentRoot /home/user_account/www/example.com/public
        <Directory /home/user_account/www/example.com/public>
                Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

        ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/user_account/www/example.com/public/$1

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
    
por pixeline 13.01.2016 / 11:41

2 respostas

4

Como seu certificado SSL não é válido para www.example.com, quando alguém acessa seu site usando www.example.com, ele receberá um aviso de certificado. Isso acontece independentemente de terem sido redirecionados ou não. Caso contrário, seria possível criar um redirecionamento para qualquer site e seria confiável.

O que você precisa fazer é obter um certificado que inclua www.example.com e example.com, ou configurar um host virtual separado para www.example.com, com um certificado válido e colocar o redirecionamento naquele virtualhost.

    
por 13.01.2016 / 11:57
1
  • Você não pode incluir um redirecionamento http - > Regra https dentro de um virtualhost ativado por SSL. Você não pode por design. Apenas aceite isso. Você precisa de um virtualhost HTTP simples para fazer o redirecionamento do HTTP (e esse é seu erro principal).
  • Na verdade, você pode ter qualquer arquivo de configuração dentro do seu diretório de configuração no Linux baseado em Debian. Você pode até excluir os diretórios dogmatic e uncomfortable sites-* e começar a usar o diretório vhost.d , como eu faço. Ninguém pode forçar você a usar algo que é desconfortável.
por 13.01.2016 / 11:54