我要删除强制的https,然后将https://重定向到http://
我在webroot文件夹中的.htaccess如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我尝试过
<IfModule mod_rewrite.c>
#Redirect HTTPS to HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
但是它没有被重定向。
预先感谢
答案 0 :(得分:0)
我认为您应该通过将AppController更改为类似的内容来强制其发出http请求,并检查是否可能有帮助
public function forceSSL() {
return $this->redirect('http://' . env('SERVER_NAME') . $this->here); }
public function beforeFilter() {
$this->Security->blackHoleCallback = 'forceSSL';
$this->Security->requireSecure(); }
答案 1 :(得分:0)
确保httpd.conf中有以下行(默认情况下启用了mod_rewrite支持):
LoadModule rewrite_module modules/mod_rewrite.so
现在,您只需要在域的根目录中编辑或创建文件.htaccess并添加以下行即可将http重定向到https:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
现在访问者正在输入http://www.yourdomain.com,服务器将自动将HTTP重定向到HTTPS https://www.yourdomain.com
如何在Apache虚拟主机上将HTTP重定向到HTTPS
此外,要强制所有Web流量使用HTTPS,还可以配置虚拟主机文件。如果启用了SSL证书,则有关虚拟主机配置有两个要点。
第一个包含非安全端口80的配置。
第二个用于安全端口443。要将网站的所有页面的HTTP重定向到HTTPS,请首先打开相应的虚拟主机文件。然后通过添加以下配置对其进行更改:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourdomain.com
Redirect / https://www.yourdomain.com
</VirtualHost>
<VirtualHost _default_:443>
ServerName www.yourdomain.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
完成所有更改后,请不要忘记重启服务器。