Muitos exemplos funcionam em configurações específicas. Este sempre funciona, não importa qual configuração seu servidor Apache usa:
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
Eu tenho os seguintes arquivos conf:
arquivo1:
NameVirtualHost 123.45.67.890:80
<VirtualHost 123.45.67.890:80>
ServerName example.com
RedirectPermanent / https://example.com/
# RewriteEngine On
# RewriteCond %{SERVER_PORT} !^443$
# RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
# SSLRequireSSL
# Redirect permanent /secure https://example.com/
# Redirect / https://example.com/
</VirtualHost>
Como você pode ver nas linhas comentadas, tentei várias abordagens.
arquivo2:
NameVirtualHost 123.45.67.890:443
<VirtualHost 123.45.67.890:443>
DocumentRoot "/opt/www/example-docroot"
ServerName example.com
DirectoryIndex index.html
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/httpd/conf.d/ssl/example.com/csr.example.2011.pem.blade
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/example.com/nokey.example.2011.pem
SSLCACertificateFile /etc/httpd/conf.d/ssl/example.com/CA.blade.2011.csr
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/etc/httpd/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
Alguma coisa removida por simplicidade, nomes alterados para proteger os inocentes.
Eu atualizo esses arquivos no servidor / etc / httpd / vhosts
execute
apachectl restart
O que me fornece esses avisos:
[warn] NameVirtualHost 123.45.67.890:80 has no VirtualHosts
[warn] NameVirtualHost 123.45.67.890:80 has no VirtualHosts
Temos vários vhosts em execução neste servidor. As configurações acima parecem estar alinhadas, então não acho que esses avisos estejam sendo aplicados aqui. Talvez errado.
Atualizando a página padrão 80 (http) no meu navegador, sempre mostra a página http padrão.
Alguma sugestão sobre como redirecionar o trabalho?
Muitos exemplos funcionam em configurações específicas. Este sempre funciona, não importa qual configuração seu servidor Apache usa:
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
Eu tinha enfrentado exatamente o mesmo problema alguns dias atrás. Eu tentei o seguinte na minha configuração VirtualHost (aplicável para a porta http 80) no arquivo httpd.conf apache que funcionou.
<Virtualhost *:80>
ServerAdmin [email protected]
ServerName site.com
ServerAlias site.com www.site.com
RedirectMatch permanent ^(.*)$ https://www.site.com$1
</Virtualhost>
Isso funciona como charme e você não precisa de nenhuma configuração em nenhum outro lugar ou qualquer módulo extra.
Melhor usar .htaccess
para isso (se possível), não é necessário mexer com os arquivos de configuração do apache.
Adicione estas linhas ao início do seu .htaccess
.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Eu tive o mesmo problema no apache 2.4 no centos 7 e a correção que funcionou para mim sem usar o RewriteEngine foi adicionar : 443 à diretiva ServerName sob o VirtualHost para https.
<VirtualHost 123.45.67.890:443>
DocumentRoot "/opt/www/example-docroot"
ServerName example.com:443
Acho que da última vez que isso aconteceu comigo pode ter sido algo estranho como NameVirtualHost *:80
/ NameVirtualHost *:443
e / ou Listen 80
/ Listen 443
estarem em algum lugar diferente de ports.conf para o apache2.
Aqui está o que eu tenho no VirtualHost para redirecionar para https para todas as páginas, exceto para a imprensa (tinha um vídeo que não podia ser exibido https, então tinha que redirecionar de volta para http, caso contrário as pessoas receberiam avisos desagradáveis sobre a página) :
<VirtualHost *:80>
ServerName example.com
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/press/.*
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NC]
</VirtualHost>
Acabei de encontrar este link hoje, talvez ajude: link
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1
Tags https virtualhost apache-2.2