Eu tenho um servidor Apache 2.2 com um certificado SSL que hospeda vários serviços que devem ser acessados apenas usando SSL.
ou seja: https : //myserver.com/topsecret/ deve ser permitido, enquanto http : //myserver.com/topsecret/ deve ser negado ou, idealmente, redirecionado para https.
http://myserver.com/public não deve ter essa restrição e deve funcionar usando http ou https.
A decisão de permitir / negar http é tomada no diretório de nível superior e afeta todo o conteúdo abaixo dele.
Existe uma diretiva que possa ser colocada na configuração do Apache para recuperar o acesso dessa maneira?
fonte
Na configuração global você pode usar:
Da mesma forma, você pode usar um arquivo .htaccess no primeiro diretório da árvore de diretórios seguros:
Esse último também pode ser colocado dentro de uma diretiva de diretório na configuração do host global ou virtual.
fonte
Como alternativa, você pode usar o idioma do servidor para fazer o processamento para você, em vez de usar as opções de configuração do Apache (se, talvez, você não tiver acesso à configuração do servidor).
Por exemplo, com PHP:
(esteja ciente de que, se você estiver usando o ISAPI no Microsoft IIS, se a solicitação não estiver sendo roteada por HTTPS, o valor da variável $ _SERVER ['HTTPS'] ficará "desativado")
fonte
Alguém mencionou SSLRequireSSL, mas não acho que funcione por si só e não encontrei um exemplo bem-sucedido. A maneira recomendada é https://wiki.apache.org/httpd/RedirectSSL Apliquei isso e funciona bem!
fonte
Supondo que você esteja usando as diretivas do VirtualHost,
Coloque uma diretiva de diretório no host virtual não ssl que nega o acesso.
Em seguida, coloque uma diretiva de diretório no host virtual ssl que concede acesso.
fonte
Eu sempre fiz esse mod_rewrite em um arquivo .htaccess, embora você deva fazê-lo também no seu arquivo de configuração principal.
Aqui está um guia com algumas maneiras de fazer isso acontecer: Redirecionamentos inteligentes de HTTP e HTTPS RewriteRule
fonte