Apache HTTP到httpsredirect

我使用下面的.htaccess规则将所有http请求redirect到https。

 RewriteEngine On RewriteBase / RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

它的工作原理,但同样的规则是不工作的子链接,当我访问现有的链接,如domain.com/about它仍然会加载在http中,没有redirect发生现有的链接。

您应该configurationApache虚拟主机来完成这项工作。 RewriteMod不是这种情况下适当的解决scheme, .htaccess也不是。

在你的httpd.conf或者等价物中,根据你的需要使用下面的行。 将其编辑到您的域名和网站。

 NameVirtualHost *:80 <VirtualHost *:80> ServerName www.example.com example.com Redirect permanent / https://example.com/ </VirtualHost> <VirtualHost _default_:443> ServerName example.com DocumentRoot /usr/local/www/apache2/htdocs SSLEngine On ** Additional configurations here ** </VirtualHost> 

希望这个澄清程序。

在共享主机上,当你没有更好的select时,你可以在.htaccess中修改你的重写规则:

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

首先,RegEx在开始时与所有请求相匹配,包括域后面的所有内容。

然后,将301结果(永久移动)的HTTP结果代码连同新的URL一起返回给客户端。 大多数现代浏览器记住新的URL,在这种情况下是httpS,并在用户下一次调用网站时自动redirect到新的URL。

我希望这有助于,亲切的问候