Redirecionamento adequado do Apache de http para https

Redirecionamento adequado do Apache de http para https

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

Quero que todas as solicitações sejam redirecionadas para HTTPS, simplesmente. No meu site principal (o que funciona), tenho isso especificado na VirtualHostconfiguração e .htaccesstenho uma regra adicional especificada para permitir URLs curtos. Especificamente, o problema no site que não funciona é que, se eu tentar acessar example.com/url, o redirecionamento vai para https://example.comurle remove o necessário /do URL.

Copiei a configuração exata para o novo VirtualHostarquivo .htaccessdo site de trabalho, então não sei por que não funciona no novo. Todos os 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. Tentei colocar um /no final das Redirectlinhas do código abaixo, mas o problema não foi resolvido. O servidor é Ubuntu 14.04 e o Apache é a versão 2.4.7. Ambos os sites são nomes de domínio separados com .confarquivos separados usados, mas estão hospedados no mesmo servidor com o mesmo endereço IP. Como posso resolver este problema?

O código relevante em 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 ajude/importe, esta é a configuração SSL no meu arquivo VirtualHost, embora seja colocada bem 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 especificamente para VirtualHosto 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>

Responder1

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ê tem que criar um certificado SSL... mas háótimo tutorialpor esta!

informação relacionada