перенаправление HTTP на https apache
окружающая среда Centos с apache
попытка настроить автоматическое перенаправление с http на https
From manage.mydomain.com --- To ---> https://manage.mydomain.com
Я попытался добавить следующее в свой httpd.conf, но это не сработало
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/ но вы все равно можете попробовать проверить эти .реврайт директивы:
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 будет,
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]