답변:
나는 실제로이 예제를 따르고 그것은 나를 위해 일했다 :)
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
/etc/init.d/httpd reload
|| service httpd reload
DocumentRoot /usr/local/apache2/htdocs
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
apache redirect http to https
여기를 검색하여 착륙했습니다. 이것이 내가 우분투에서 한 일입니다.
sudo a2enmod rewrite
sudo a2enmod ssl
파일 편집
/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>
sudo service apache2 restart
실제로, 귀하의 주제는 https://serverfault.com/에 속 하지만 다음 .htaccess 지시문 을 여전히 확인할 수 있습니다 .
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1
가상 호스트를 사용하고 리디렉션하는 대신 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]
서버 버전 : 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
이 코드는 저에게 효과적입니다.
# ----------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]
나는 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 주소 일 뿐이므로 실제 호스트 이름을 지정할 필요가 없었습니다.