HTTP to 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}/$1 [NC,R,L]
Любые идеи?
Ответы
Ответ 1
Я действительно следовал этому примеру, и это сработало для меня:)
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>
Тогда do:
/etc/init.d/httpd restart
Ответ 2
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
Искал 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>
3) Перезапустите apache2
sudo service apache2 restart
Ответ 4
Собственно, ваша тема принадлежит https://serverfault.com/, но вы все равно можете проверить эти директивы .htaccess:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1
Ответ 5
Это сработало для меня:
RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]
Ответ 6
Этот код работает для меня.
# ----------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]
Ответ 7
Использование 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]