перенаправление apache с http на https
окружающая среда Centos с apache
попытка настроить автоматическое перенаправление с http на https
From manage.mydomain.com --- To ---> https://manage.mydomain.com
Я попытался добавить следующее в мой httpd.конф, но это не сработало
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/ [NC,R,L]
какие идеи?
8 ответов:
Я на самом деле следовал этому примеру, и он работал для меня :)
NameVirtualHost *:80 <VirtualHost *:80> ServerName mysite.example.com DocumentRoot /usr/local/apache2/htdocs 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
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
и вот приземлились. Это то, что я сделал на ubuntu: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>
- обратите внимание, что для модуля SSL требуется сертификат. вам нужно будет указать существующий (если вы его купили) или создать самозаверяющий сертификат самостоятельно.
3) перезагрузка apache2
sudo service apache2 restart
на самом деле, ваша тема принадлежит на https://serverfault.com/ но вы все равно можете попробовать проверить эти .htaccess директивы:
RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*) https://%{HTTP_HOST}/
использование 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}/ [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 ^/?(.*) https://%{SERVER_NAME}/ [R=301,L]
Если у вас есть Apache2.4 Проверьте
000-default.conf
- удалитьDocumentRoot
и добавитьRedirect permanent / https://[your-domain]/
это сработало для меня:
RewriteCond %{HTTPS} =off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]
этот код работает для меня.
# ----------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]