Redirecionamento do Apache de http para https não funciona

2

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?

    
por Jahmic 23.08.2012 / 05:32

7 respostas

13

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]
    
por 02.10.2012 / 14:19
9

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.

    
por 23.08.2012 / 10:19
1

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}
    
por 23.08.2012 / 08:29
1

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
    
por 10.05.2017 / 13:37
0

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>
    
por 23.08.2012 / 06:07
0

Acabei de encontrar este link hoje, talvez ajude: link

    
por 02.10.2012 / 14:22
-2
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1
    
por 11.08.2015 / 06:36