代码之家  ›  专栏  ›  技术社区  ›  Cliff_Cleet

在cakephp htacess中将Https重定向到http

  •  0
  • Cliff_Cleet  · 技术社区  · 7 年前

    我要删除强制https,并将https://重定向到http://

    webroot文件夹中的My.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 回复  |  直到 7 年前
        1
  •  0
  •   phemieny7    7 年前

    我认为您应该通过将AppController更改为类似这样的内容来强制来自AppController的http请求,并检查它是否有帮助

    public function forceSSL() {
        return $this->redirect('http://' . env('SERVER_NAME') . $this->here); }
    
    public function beforeFilter() {
        $this->Security->blackHoleCallback = 'forceSSL';
        $this->Security->requireSecure(); }
    
        2
  •  0
  •   Vlad Ivchenko    7 年前

    确保httpd.conf中有以下行(默认情况下启用mod_rewrite支持):

    LoadModule rewrite_module modules/mod_rewrite.so
    

    现在您只需要在域的根目录中编辑或创建一个file.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>
    

    在所有更改之后,不要忘记重新启动服务器。

    推荐文章