Php 从HTTPS重定向到HTTP

Php 从HTTPS重定向到HTTP,php,codeigniter,ssl,https,cloudflare,Php,Codeigniter,Ssl,Https,Cloudflare,webapp是使用CodeIgniter构建的,而我使用的是Cloudflare灵活的SSL 页面通过HTTPS加载,但只要有重定向,页面就会通过HTTP加载。从那时起,所有页面都通过HTTP提供服务 下面是一个例子: public function logout() { $this->session->sess_destroy(); redirect('/'); } 注销功能完成后,所有页面都通过HTTP加载 如何确保页面在重定向后通过HTTPS加载 以下是my

webapp是使用CodeIgniter构建的,而我使用的是Cloudflare灵活的SSL

页面通过HTTPS加载,但只要有重定向,页面就会通过HTTP加载。从那时起,所有页面都通过HTTP提供服务

下面是一个例子:

public function logout()
{
    $this->session->sess_destroy();
    redirect('/');

}
注销功能完成后,所有页面都通过HTTP加载

如何确保页面在重定向后通过HTTPS加载

以下是my.htaccess文件的内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
 <IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule> 

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.myurl.com/$1 [R,L]

重新启动发动机
重写基/
重写COND%{REQUEST_URI}^系统*
重写规则^(.*)$/index.php?/$1[L]
重写cond%{REQUEST_URI}^应用程序*
重写规则^(.*)$/index.php?/$1[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php?/$1[L]
ErrorDocument 404/index.php
重新启动发动机
重写cond%{SERVER_PORT}80
重写规则^(.*)$https://www.myurl.com/$1[R,L]

简单的方法可能是这样设置基本url

$config['base_url'] = "https://yoursite.com/";
这将导致访问
$config['base\u url']
(包括
重定向()
)的所有CI函数使用https

不常提及的是
base\u url()
通过使用第二个参数强制协议的能力。e、 g

echo base_url("blog/post/123", 'https'); 
您可以使用.htaccess强制重定向到https协议。 将其置于现有命令之上

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

删除行上的第二个
重写引擎,并将建议的条件/规则放入
块中。同时检查基本url的
APPPATH.config/config.php'
值,并将https放在那里。为清晰起见,基本url的值应为
https://www.myurl.com
,对吗?用javascript代替php重定向
window.location=”http://www.yoururl.com";
https://www.myurl.com/
@Tpojka将.htaccess文件保持不变,但将配置中的基本url更改为https,解决了此问题。谢谢你的建议