Forçar SSL com host virtual baseado em nome (possivelmente com .htaccess)

1

Eu tenho vários subdomínios servidos pelo Apache usando Hosts virtuais baseados em nome. A maneira como é configurada é que eu tenho um diretório contendo todas as páginas do site, mas é acessível usando vários subdomínios (um aplicativo da web com um tema diferente para cada cliente). Para cada subdomínio, tenho um link simbólico para o diretório principal, que corresponde ao mapeamento de host virtual baseado em nome. Então eu uso apenas $ _SERVER ['HTTP_HOST'] em meus scripts php para determinar qual tema servir, mas o código base é o mesmo. O problema é que os sites precisam ser SSL e tenho dificuldade em descobrir como forçá-lo dessa maneira.

Eu vi este exemplo para o .htaccess:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Mas o problema é que exige que você codifique o domínio www.example.com. Como faço para ir para a versão SSL de qualquer domínio que seja realmente solicitado, em vez de codificá-lo?

Eu vi a variável {HTTP_HOST} sendo usada na parte RewriteCond do .htaccess, mas parece não funcionar quando tento usá-la em RewriteRule . Tentei o seguinte e me deu um erro 500:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://{HTTP_HOST}/$1 [R,L]
    
por SaltyNuts 02.03.2011 / 17:00

2 respostas

3

A capacidade de usar essas mesmas variáveis condicionais na string de substituição torna isso uma solução simples.

Alterar

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

para

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
    
por 02.03.2011 / 17:09
-1

O Apache SSL não funciona com o host virtual de nomes. consulte:

link

    
por 01.02.2012 / 19:16