Reescreva de Inseguro para Proteger Domínio com Curinga

1

Estou procurando a maneira correta de lidar com o redirecionamento de solicitações inseguras (via porta 80) para proteger (porta 443) com a configuração do servidor Apache. Eu não quero colocar isso no meu arquivo .htaccess também.

Atualmente eu tenho isso no meu arquivo link :

ServerName example.com
ServerAlias *.example.com

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$
RewriteRule ^(.*)$ https://%1.example.com/$1 [R=302,L]

O objetivo é fazer um redirecionamento de curinga (no subdomínio e subpasta). Para ser específico, aqui estão alguns dos principais casos de uso:

 - http://subdomain.example.com to https://subdomain.example.com
 - http://example.com to https://www.example.com
 - http://www.example.com/contact/ to https://www.example.com/contact
 - http://subdomain.example.com/contact/ to https://subdomain.example.com/contact

Em suma, basta substituir link por link , desde que duas condições sejam atendidas:

  • O URI solicitado contém mydomain.com
  • O URI solicitado ainda não está seguro (apenas tráfego http)

Eu tentei vários métodos diferentes, mas nada parece capturar todas as variações de subdomínios e subpastas, para minha surpresa.

Alguma ideia? Obrigado!

    
por Tony D 17.10.2016 / 03:53

2 respostas

0

Um host virtual simples é a melhor maneira de capturar todas as solicitações HTTP. Então você não pode redirecionar acidentalmente solicitações HTTPS. Algo como.

<VirtualHost *:80>
   ServerName example.com
   ServerAlias *.example.com

   # Redirect subdomains.
   RewriteEngine on
   RewriteCond %{HTTP_HOST} (\w+.example.com)
   RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

   # Everything else to www.example.com preserving URI path
   Redirect 301 / https://www.example.com/
</VirtualHost
    
por 17.10.2016 / 08:36
0

Para redirecionar para HTTPS:

RewriteEngine On

RewriteCond% {HTTPS} desativado

RewriteRule ^ //% {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 >

Explicação das diretivas de modificação de reescrita usadas

RewriteEngine On --- Ele ativará o mecanismo mod_rewrite do servidor apache em

RewriteCond% {HTTPS} desativado ------

Irá conter o texto "on" se a conexão estiver usando SSL / TLS ou "off". (Esta variável pode ser usada com segurança independentemente de o mod_ssl estar ou não carregado). irá avaliar para uma condição verdadeira se a conexão não for ssl / tls

RewriteRule ^ //% {HTTP_HOST}% {REQUEST_URI}

isto é para formar o URL originalmente solicitado pelo cliente, mas em https

    
por 18.10.2016 / 12:25