将HTTPs重定向到cakephp htacess中的http

时间:2018-10-05 07:31:23

标签: php apache .htaccess mod-rewrite cakephp

我要删除强制的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>

但是它没有被重定向。

预先感谢

2 个答案:

答案 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>

完成所有更改后,请不要忘记重启服务器。