帝国CMS用了https协议,后台一片空白终极解决方法

- 编辑:爱思60度微信公众号(wangxi2004324235) -

现在为什么那么多网站,都用了https协议呢?

原因很简单,百度站长明确要求大家使用了。

为了排名,为了收录,很多站长,都直接用了https协议。

比如,我们百度搜索关键词:重庆格力空调维修。

blob.png

这个用了https。

百度:减肥药。

blob.png

所以,为了用上这个https,大家站长都很努力,去购买SSL证书。

当然,帝国CMS7.5也支持了,这个证书。

通常网站一般采用HTTP传输协议即可,但针对内容安全性要求更高的网站推荐采用HTTPS(比如:各银行网站等都是采用HTTPS)。

所以针对安全性要求更高的网站,帝国CMS7.5版新增支持HTTPS传输协议,更安全。

帝国CMS7.5版可自行灵活选择是否使用HTTPS:

1、支持由系统自动识别当前服务器是否使用HTTPS。

2、支持设置全站使用http。

3、支持设置全站使用https。

4、支持设置后台https,前台http。

5、支持设置后台http,前台https。

blob.png

可是呢,如果你的网站想增加一点东西,或者修改一下东西,从服务器直接把网站下载到本地,还原数据后,会发现后台打不开,直接就是一片空白。

我百度了网上的教程:关于帝国后台登录出现空白页解决方法:

一、首先确保网校转移相关数据表信息修改确认无误。

二、检查服务器当前环境,采用重装帝国CMS方式,下载帝国CMS文件并传到对应的位置,注意文件做好备份(几个帝国目录)。

在服务器网址里面输入/e/admin/install进行环境的检测。有几率出现报错“将short_open_tag(/etc/php.ini)设置为On,才可继续进行”,

修改完成后重启nginx(nginx -s reload)的同时一定要重启php-fpm(/etc/init.d/php-fpm restart),否则不会生效。继续进行下一步

检测环境。同理可以采用edusoho安装配置前的环境检测。

三、有可能帝国安装的版本不同(查看版本:e/class/EmpireCMS_version.php),数据库导入之后可

能存在差异,在不一致的情况下把原来有关根目录下帝国文件夹(/e,/d,...)拷贝过来。再次登录。

注1:如果出现登录成功,但是又马上出现您未登录,请赋予e/data/adminlogin 777权限,同时清理缓存,即可解决。

我自己核对过,综合分析,应该不是网站文件不齐全,或者权限造成的,也不可能是数据库不齐全。

发现,真正的问题就是https造成的!

因为我们本地是http://localhost/

那网上,是用了http://www.haosenc1688.com/这样的完整域名。

哪怎么办?怎么样在,本地关闭https,这应该才是终极的解决问题。

第一步:在虚拟主机,把控制https跳转的代码是.htaccess文件,可以把这个文件改成.htaccess_bak,待到重新上传到空间主机,先要在主机上暂停ssl,待到本地修改完毕,再修改回来,当然也要记住恢复ssl。

附linux西部数码的正则表达式:

RewriteEngine On
RewriteCond %{HTTP:From-Https} !^on$ [NC]
#RewriteCond  %{HTTPS} !^on$ [NC]                      # 非亚数机房用这一行替换上一行规则
RewriteCond %{HTTP_HOST} ^(www.)?haosenc1688.com$ [NC]                # 将abc.com和www.abc.com跳转到https://www.abc.com,防止apache子站继承上级目录.htaccess受影响
RewriteRule ^(.*)$ https://www.haosenc1688.com/$1 [R=301,L]

第二步:在帝国CMS7.5后台,把https全部,改成系统自动识别。

第三步:这时候,再去备份数据库,才有意义,如果没有经过第一步,第二步,直接就去备份数据库,下载下来的文件,在本地调试,一定是空白一片的。

blob.png

上面是前奏,下面才是主菜,以下方法适用帝国cms7.5版本:

7.5版本已经有了http和https自动识别,但是因为一些疑难杂症的原因,自动识别判断的不准,后台登录也是空白,

我们可以打开e/config.php查找'httptype'=>0改为'httptype'=>2即可

 

'httptype'=>0,  代表自动
'httptype'=>1,代表全站http
'httptype'=>2,代表全站https
'httptype'=>3,代表后台https,前台http
'httptype'=>,代表后台http,前台https


以下方法适用帝国cms7.2和以下的版本:

方法一、

打开/e/class/connect.php文件,ctrl+h

查找

1
return 'http://'.$domain;

替换为

1
return ($_SERVER['HTTPS'] ? 'https':'http').'://'.$domain;

方法二、

步骤一:找到/e/class/connect.php文件中如下代码:

1
2
3
4
5
6
7
8
9
function eReturnDomain(){
        $domain=RepPostStr($_SERVER['HTTP_HOST'],1);
        if(empty($domain))
        {
                return
'';
        }
        return 'http://'.$domain;    
}

替换成:

1
2
3
4
5
6
7
8
9
10
11
12
13
$domain=RepPostStr($_SERVER['HTTP_HOST'],1);
 
    if(empty($domain))
 
    {
 
        return '';
 
    }
 
    return ($_SERVER['HTTPS'] ? 'https':'http').'://'.$domain;
 
}

步骤二:

找到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function FWeReturnDomain(){
 
    $domain=RepPostStr($_SERVER['HTTP_HOST'],1);
 
    if(empty($domain))
 
    {
 
        return '';
 
    }
 
    return 'http://'.$domain;
 
}

替换为:

1
2
3
4
5
6
7
8
9
10
11
12
13
$domain=RepPostStr($_SERVER['HTTP_HOST'],1);
 
    if(empty($domain))
 
    {
 
        return '';
 
    }
 
    return ($_SERVER['HTTPS'] ? 'https':'http').'://'.$domain;
 
}

以上文章是由:爱思60度QQ:52440488 原创发布。

99%的人还阅读了:

帝国CMS整合语言包制作双语模板的方法和技巧

鲜为人知帝国CMS内容页调用上一篇和下一篇的精华方法汇总

帝国CMS7.5编辑器换行如何将<br> 换成<p>的方法有哪些?

公众号搜索“爱思60度”,领取大礼包

微信二维码

来源:,欢迎分享本文,转载请保留出处!(微信公众号:wangxi2004324235)