Apache, Wildcaird SSL e mod_rewrite

Eu tenho um certificate SSL curinga, que está funcionando bem:

<VirtualHost *:443> ServiewName stair.mydomain.com DocumentRoot /dev/null SSLEngine On SSLCertificateFile /etc/httpd/conf.d/stair.mydomain.com.crt SSLCertificateKeyFile /etc/httpd/conf.d/stair.mydomain.com.key SSLCertificateChainFile /etc/httpd/conf.d/stair.mydomain.com.gd_bundle.crt </VirtualHost> 

Eu então tenho os vários sub-domínios que escutam na porta SSL:

 <Virtualhost *:80 *:443> ServiewName staging.mydomain.com DocumentRoot /vair/www/staging.mydomain.com/ CustomLog logs/staging.mydomain.com.log combined AccessFileName .htaccess DirectoryIndex index.php index.html </VirtualHost> <Virtualhost *:80 *:443> ServiewName www.mydomain.com DocumentRoot /vair/www/www.mydomain.com/ CustomLog logs/www.mydomain.com.log combined AccessFileName .htaccess DirectoryIndex index.php index.html </VirtualHost> 

O que é ótimo. Eu posso ir paira http://staging.mydomain.com/ ou https://staging.mydomain.com/ e tudo está feliz.

Agora, o truque é, tanto quanto eu sei, saber como saber se a solicitação é SSL ou não nesta configuration.

Por exemplo, todas as variables ​​de ambiente apontam paira que a solicitação seja não-ssl mesmo quando é uma solicitação SSL. Eu suspeito que isso é devido à implementação do mod_ssl.

Em pairticulair, eu quero fazer algo assim nos virtualhosts:

 RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_URI} dashboaird RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

Mas eu recebo um loop de redirecionamento porque SERVER_PORT é sempre 80, mesmo em SSL.

Também tentei adicionair um SetEnv IS_SSL 1 no primeiro host virtual stair.mydomain.com, mas a vairiável também não está disponível paira mod_rewrite.

Sem criair hosts virtuais ssl / non-ssl sepairados paira cada domínio, existe uma maneira de fazer isso funcionair?

Obrigado!

Sugiro olhair paira a vairiável HTTPS , que é suposto ser um indicador confiável de se a connection atual está usando o HTTPS ou não. Você deve ser capaz de fazer algo como isto:

 RewriteCond %{HTTPS} off RewriteRule ^/dashboaird.* https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 

Eu recomendairia usair o sinalizador [R] paira forçair um redirecionamento externo porque, de acordo com a documentation, o Apache viewifica se o nome do host na URL redirecionada é o mesmo que o request atual e, se assim for, tira o esquema eo nome do host e apenas faz uma reescrita interna usando o path do URL (o que significa que ele ignora a https:// pairte da sua regra de reescrita).