http에서 https로 아파치 리디렉션


157

아파치와 환경 Centos

http에서 https로 자동 리디렉션 설정 중

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

httpd.conf에 다음을 추가하려고 시도했지만 작동하지 않았습니다.

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

어떤 아이디어?

답변:


209

나는 실제로이 예제를 따르고 그것은 나를 위해 일했다 :)

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>

그런 다음 수행하십시오.

/etc/init.d/httpd restart


7
VirtualHost 파일에 액세스 할 수있는 경우에만 사용할 수 있습니다. 권장되는 방법입니다.
foochow

4
httpd.conf에서이를 변경 한 후 Apache 웹 서버를 다시 시작하십시오. 브라우저 캐시도 반영하고 지 웁니다.
Suriyan Suresh

2
이 방법이 Ubuntu 12.4에서 작동하지 않는다고보고하고 싶지만 제안 된 RewriteEngine 답변이 트릭을 수행했습니다.
Deano

2
다시 시작해야합니까? 재로드는 훨씬 덜 파괴적이며 새로운 설정 파일을 가져올 것입니다. /etc/init.d/httpd reload|| service httpd reload
Rebecca Dessonville

3
목적은 그것을 ssl 모드로 재지 DocumentRoot /usr/local/apache2/htdocs
정하는 것이기

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

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

또는

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


3
파운드 나 BigIP와 같은 SSL 오프로더 뒤에있는 경우에도 작동하므로 승인 된 솔루션보다 더 나은 솔루션입니다. 이러한 오프로더는 종종 모든 트래픽을 동일한 포트로 전달하며 승인 된 솔루션은 특정 상황에서 작동하지 않습니다.
spiritoo

1
@spiritoo 그렇지 않습니다. : 아파치 문서는 특히 이것이 당신이 mod_rewrite를 사용하지 말아야 오히려 리디렉션 사용해야하는 상황 중 하나라고 말할 httpd.apache.org/docs/2.4/rewrite/avoid.html
누가 복음 Madhanga

4
@LukeMadhanga 성능을 위해 Redirect를 사용하는 Apache docrecommands. 그러나 여전히 RewriteEngine 솔루션은 더 포괄적 인 의미에서 더 좋습니다. 내가 설명한 경우 (오프로드)에서도 작동하기 때문입니다. 내 의견의 목표는 모든 사용자에게 두 답변 중에서 선택할 수있는 열쇠를 제공하는 것입니다. 어떤 사람들은 일반적인 절차 (큰 군단)를 원하고 다른 사람들은 성능을 원합니다. 그것은 자유로운 선택입니다.
spiritoo

20
그러나 더 크게하려면이 매개 변수를 보안 페이지로 전달하도록이 [R = 302, L, QSA]를 추가하십시오. % {REQUEST_URI} [R = 302, L, QSA]
Svetoslav Marinov 2016 년

이 줄을 사용했고 페이지를로드하려고 할 때 응답이 "자원을로드하지 못했습니다 : net :: ERR_CONNECTION_REFUSED"입니다. 내가 뭘 잘못하고 있죠?
Serkan

98

apache redirect http to https여기를 검색하여 착륙했습니다. 이것이 내가 우분투에서 한 일입니다.

1) 모듈 활성화

sudo a2enmod rewrite
sudo a2enmod ssl

2) 사이트 구성 편집

파일 편집

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

내용은 다음과 같아야합니다.

<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) 아파치 다시 시작

sudo service apache2 restart

Ubuntu 16.04 및 Apache2와 함께 작동하십시오. 감사!
실베스터 야오

11

실제로, 귀하의 주제는 https://serverfault.com/에 속 하지만 다음 .htaccess 지시문 을 여전히 확인할 수 있습니다 .

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

11

가상 호스트를 사용하고 리디렉션하는 대신 mod_rewrite를 사용하지 않는 것이 좋습니다.

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

참조 : Httpd Wiki-RewriteHTTPToHTTPS

301 영구 리디렉션을 찾고 있다면 리디렉션 플래그는 다음과 같아야합니다.

 R=301

RewriteRule은 다음과 같습니다.

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

6

Apache2.4 검사가있는 경우 000-default.conf제거 DocumentRoot하고 추가하십시오.

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

5

서버 버전 : Apache / 2.4.29 (우분투)

웹과 아파치 공식 문서에서 오랫동안 검색 한 후에 나를 위해 일한 유일한 솔루션은 /usr/share/doc/apache2/README.Debian.gz 에서 나왔습니다.

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

/etc/apache2/sites-available/000-default.conf 파일에

"/" " https://sub.domain.com/ " 리디렉션

<VirtualHost *:80>

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

그게 다야.


추신 : 추출하지 않고 설명서를 읽으려면 :

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

3

이것은 나를 위해 일했다 :

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

3

이 코드는 저에게 효과적입니다.

# ----------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

아파치 가상 호스팅 구성에서 이것을 시도한 다음 아파치 서비스를 다시로드하십시오

RewriteEngine On

RewriteCond %{HTTPS} off


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

-1

나는 http서버의 기본 아파치 홈 페이지에서 제공되는 모든 트래픽을 재전송하는 것만 큼 간단한 것을 위해 이것을 필요로 했다 https.

아파치를 구성 할 때 여전히 녹색 이기 때문에 mod_rewrite직접 사용하는 것을 피하고 대신 다음과 같은 간단한 것을 시도했습니다.

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

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

아파치 변수를 사용할 수 있었기 때문에이 방법이 마음에 듭니다. 도메인 이름이없는 IP 주소 일 뿐이므로 실제 호스트 이름을 지정할 필요가 없었습니다.

참조 : https://stackoverflow.com/a/40291044/2089675

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.