redirecionamento http para https apache


157

Meio Ambiente Centos com apache

Tentando configurar o redirecionamento automático de http para https

From manage.mydomain.com --- To ---> https://manage.mydomain.com 

Eu tentei adicionar o seguinte ao meu httpd.conf, mas não funcionou

 RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

Alguma ideia?

Respostas:


210

Na verdade, segui este exemplo e funcionou para mim :)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
  DocumentRoot /usr/local/apache2/htdocs
  SSLEngine On
 # etc...
</VirtualHost>

Então faça:

/etc/init.d/httpd restart


7
Observe que isso só está disponível se você tiver acesso ao arquivo VirtualHost. É o método recomendado.
Foochow

4
Após alterar isso no httpd.conf, reinicie o servidor web apache. para que ele também reflita e limpe o cache do navegador.
Suriyan Suresh

2
Eu gostaria de relatar que esse método não funcionou para mim no Ubuntu 12.4, no entanto, a resposta proposta ao RewriteEngine fez o truque.
217 Deano

2
você precisa reiniciar? uma recarga é muito menos destrutiva e trará o novo arquivo de configuração. /etc/init.d/httpd reload|| service httpd reload
precisa saber é o seguinte

3
desde que o objetivo era redirecioná-lo para o modo ssl, a linha DocumentRoot /usr/local/apache2/htdocsnão é mais necessária
Abel Callejo

130
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

http://www.sslshopper.com/apache-redirect-http-to-https.html

ou

http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html


3
Esta é uma solução melhor que a aprovada, porque funciona mesmo se você estiver atrás de um descarregador SSL como Pound ou BigIP. Aqueles offloader, muitas vezes, passar todo o tráfego para o mesmo porto, e a solução aprovada não vai funcionar nesse caso específico
spiritoo

1
@spiritoo Não é assim. Os docs Apache dizer especificamente que esta é uma daquelas situações em que você não deve usar mod_rewrite e deve preferir usar Redirect: httpd.apache.org/docs/2.4/rewrite/avoid.html
Luke Madhanga

4
O @LukeMadhanga Apache documenta usando Redirect para desempenho. Mas, ainda assim, a solução RewriteEngine é melhor, no sentido de mais genérica, porque funciona mesmo no caso que descrevi (descarregamento). O objetivo do meu comentário é fornecer a todos os usuários a chave para escolher entre as duas respostas. Algumas pessoas querem procedimentos genéricos (grandes corporações), outras querem desempenho ... é uma escolha livre.
spiritoo

20
Isso é ótimo, no entanto, se você quiser aumentá-lo, adicione-o [R = 302, L, QSA] para que todos os parâmetros também sejam passados ​​para a página segura. Deve ter a seguinte aparência:% {REQUEST_URI} [R = 302, L, QSA]
Svetoslav Marinov

Eu usei essas linhas e, ao tentar carregar a página, a resposta é "Falha ao carregar o recurso: net :: ERR_CONNECTION_REFUSED". O que estou fazendo de errado?
Serkan

98

Pesquisado apache redirect http to httpse desembarcado aqui. Isto é o que eu fiz no ubuntu:

1) Ativar módulos

sudo a2enmod rewrite
sudo a2enmod ssl

2) Edite a configuração do seu site

Editar arquivo

/etc/apache2/sites-available/000-default.conf

O conteúdo deve ser:

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    <path to your crt file>
    SSLCertificateKeyFile   <path to your private key file>

    # Rest of your site config
    # ...
</VirtualHost>

3) Reinicie o apache2

sudo service apache2 restart

Trabalhe com o Ubuntu 16.04 e Apache2. Obrigado!
Sylvester Yao

11

Na verdade, seu tópico pertence a https://serverfault.com/, mas você ainda pode tentar verificar estas diretivas .htaccess :

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1

11

Usar mod_rewrite não é a maneira recomendada. Em vez disso, use o host virtual e o redirecionamento.

Caso você esteja inclinado a usar o mod_rewrite:

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same 
location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context

Referência: Httpd Wiki - RewriteHTTPToHTTPS

Se você estiver procurando por um redirecionamento permanente 301, o sinalizador de redirecionamento deve ser o seguinte,

 R=301

então o RewriteRule será como,

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

6

Se você possui o Apache2.4, 000-default.confremova DocumentRoote adicione

Redirect permanent / https://[your-domain]/

5

Versão do servidor: Apache / 2.4.29 (Ubuntu)

Após uma longa pesquisa na web e na documentação oficial do apache, a única solução que funcionou para mim veio de /usr/share/doc/apache2/README.Debian.gz

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

No arquivo /etc/apache2/sites-available/000-default.conf, adicione o

Redirecionar "/" " https://sub.domain.com/ "

<VirtualHost *:80>

    #ServerName www.example.com
    DocumentRoot /var/www/owncloud
    Redirect "/" "https://sub.domain.com/"

É isso aí.


PS: Se você quiser ler o manual sem extrair:

gunzip -cd /usr/share/doc/apache2/README.Debian.gz

3

Isso funcionou para mim:

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]

3

Este código funciona para mim.

# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]


2

Por favor, tente este na configuração do apache Virtualhosting e, em seguida, recarregue o serviço apache

RewriteEngine On

RewriteCond %{HTTPS} off


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

-1

Eu precisava disso para algo tão simples como redirecionar todo o httptráfego da página inicial padrão do apache no meu servidor para uma que foi servida https.

Como ainda sou bastante verde em relação à configuração do apache, prefiro evitar o uso mod_rewritedireto e, em vez disso, optei por algo mais simples como este:

<VirtualHost *:80>
  <Location "/">
     Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
  </Location>
</VirtualHost>

<VirtualHost *:443>
  DocumentRoot "/var/www/html"
  SSLEngine on
  ...
</VirtualHost>

Eu gosto disso porque me permitiu usar variáveis ​​apache e, dessa forma, não precisei especificar o nome do host real, pois é apenas um endereço IP sem um nome de domínio associado.

Referências: https://stackoverflow.com/a/40291044/2089675

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.