redireciona http permanente para https

3

Sistema: Ubuntu 14.04, Apache 2.4.7

Eu quero que todos os pedidos para link e link sejam redirecionados para link . Eu também quero redirecionar as solicitações para o subdomínio "www" para o host domain.com principal, enquanto alguns outros subdomínios (tools.domain.com e phpmyadmin.domain.com) permanecerão acessíveis por http no momento.

Tudo isso deve ser feito diretamente através do arquivo de configuração do virtualhost para domain.com, ( /etc/apache2/sites-available/domain.com.conf full content here below), então reinicie o serviço apache2 várias vezes.

O redirecionamento do link para o link funciona. O redirecionamento do link para o link não funciona. O redirecionamento do link para o link não funciona.

Aqui está o conteúdo do arquivo virtualhost:

<VirtualHost *:*>
    ServerName www.domain.com
    Redirect permanent / https://domain.com/
</VirtualHost>

<VirtualHost _default_:80>
    ServerName domain.com
    Redirect permanent / https://domain.com/
    LogLevel error
</VirtualHost>

<VirtualHost *:80>
    ServerName tools.domain.com
    DocumentRoot /var/www/domain.com/subdomains/tools/public
</VirtualHost>

<VirtualHost *:80>
    ServerName phpmyadmin.domain.com
    DocumentRoot /usr/share/phpmyadmin
</VirtualHost>

<VirtualHost _default_:443>
    ServerName domain.com

    DocumentRoot /var/www/domain.com/public

    <Directory /var/www/domain.com/public>
        Require all granted
    </Directory>

    # SSL CERTIFICATES
    GnuTLSEnable on
    GnuTLSExportCertificates on
    GnuTLSCacheTimeout 500
    GnuTLSCertificateFile /etc/ssl/certs/domain.com-certificate-125023.crt
    GnuTLSKeyFile         /etc/ssl/private/domain.com.key
    GnuTLSPriorities      NORMAL
</VirtualHost>

Atualização: somente o link não funciona

Estupendo-me: o problema estava além do servidor! Eu não configurei nenhum subdomínio 'www' na minha zona DNS. Eu corrigi isso e agora estou quase lá.

    
por pixeline 04.02.2015 / 00:32

2 respostas

2

_default_ significa padrão

Com configuração assim:

<VirtualHost _default_:80>
    ...
</VirtualHost>

<VirtualHost _default_:443>
    ...
</VirtualHost>

<VirtualHost *:*>        
    ...
</VirtualHost>

O último host virtual é inacessível nas portas 80 e 443, pois qualquer solicitação nessas portas será processada pelo host _default_ virtual relevante. O host virtual *:* provavelmente não é obrigatório (você espera que os usuários públicos usem mais portas?).

Exemplo de trabalho

Portanto, para ter tudo redirecionado para https://example.com você precisa, por exemplo:

<VirtualHost *:443>
    ServerName example.com

    # SSL config

    ...
</VirtualHost>

<VirtualHost *:80>
    RewriteEngine On
    RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>

    # SSL config

    RewriteEngine On
    RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
</VirtualHost>

Observe o uso de uma regra de reconfiguração de captura de tudo, pois o uso do redirecionamento corresponde apenas a uma URL

.     
por 04.02.2015 / 18:02
3

Você já tentou usar o mod_rewrite? Você pode realizar o mesmo com a seguinte regra mod_rewrite.

RewriteCond %{SERVER_PORT} 80 [OR,NC]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
    
por 04.02.2015 / 15:04