Redirecionamento adequado do Apache de http para https

3

Eu configurei um novo host virtual para um novo site no meu servidor, mas ele está agindo de forma estranha, apesar de ter as mesmas configurações do meu site original.

Eu quero que todos os pedidos sejam redirecionados para HTTPS, basta colocar. No meu site principal (o que está funcionando) eu tenho isso especificado no VirtualHost config, e em .htaccess eu tenho uma regra adicional especificada para permitir URLs curtos. Especificamente, o problema no site que não funciona é que, se eu tentar ir para example.com/url , o redirecionamento vai para https://example.comurl e remove o / necessário da URL.

Copiei a configuração exata para o novo arquivo VirtualHost e .htaccess do site de trabalho, por isso não sei por que ele não funciona no novo. Meus registros DNS de ambos os sites usam registros A para apontar para ele, nenhum redirecionamento ou qualquer coisa acontece no nível do DNS. Eu tentei colocar um / no final das linhas Redirect no código abaixo, mas o problema não foi resolvido. O servidor é o Ubuntu 14.04 e o Apache é a versão 2.4.7. Ambos os sites são nomes de domínio separados com arquivos .conf separados usados, mas são hospedados no mesmo servidor com o mesmo endereço IP. Como posso resolver este problema?

O código relevante no VirtualHost :

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com
</VirtualHost>

E em .htaccess :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

Caso isso ajude / importe, esta é a configuração SSL no meu arquivo VirtualHost, embora seja colocada no início do arquivo fora de todas as outras diretivas:

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdo$
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

E esta é a configuração específica para o VirtualHost do site:

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example
    ErrorLog ${APACHE_LOG_DIR}/errorexample.log
    Options -Indexes

    SSLEngine on
    SSLCertificateFile /etc/ssl/example/examplecert.crt
    SSLCertificateKeyFile /etc/ssl/example/examplekey.key
    SSLCertificateChainFile /etc/ssl/chain/class1.pem
</VirtualHost>
    
por vaindil 15.05.2015 / 21:11

1 resposta

3

Para redirecionar para HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Mas você precisa ter um host virtual para ssl:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

OBSERVAÇÃO: você precisa criar um certificado SSL ... mas há ótimo tutorial para isso!

    
por 15.05.2015 / 21:23