帝国CMS7.5关闭会员模块提示页面优化方案
我的站长站
2026-09-05
共人阅读
帝国CMS默认关闭会员等模块后,访问“/e/member/register/ChangeRegister.php”,函数只会直接输出简单文字 member is close,HTTP状态码依旧返回200正常状态,会导致搜索引擎把这个提示页面收录,造成多余无效页面,下面我的站长站给出修改方案。
问题根源
文件路径:/e/class/connect.php
原有 eCheckCloseMods() 函数,模块关闭时直接打印文本退出,没有返回403状态码,也没有Robots禁止抓取标识,爬虫会正常收录该页面。
修改完整代码
找到源码:
//验证是否关闭相关模块
function eCheckCloseMods($mod){
global $public_r;
if(strstr($public_r['closemods'],','.$mod.','))
{
echo $mod.' is close';
exit();
}
}替换为下面代码:
//验证是否关闭相关模块
function eCheckCloseMods($mod){
global $public_r;
if(strstr($public_r['closemods'],','.$mod.','))
{
header('HTTP/1.1 403 Forbidden');
echo '<!DOCTYPE html><html><head><meta name="robots" content="noindex,nofollow"></head><body>';
echo $mod.' 关闭';
echo '</body></html>';
exit();
}
}修改之后效果
访问已关闭模块接口,返回 403 Forbidden HTTP状态码
页面增加
robots="noindex,nofollow"元标签,告诉搜索引擎不要抓取、不要收录此页面输出简单html页面,不再是纯裸文本输出
操作注意事项
1、修改前务必备份原 connect.php 文件,出错可以直接回滚。
2、PHP必须在输出内容之前执行header,本函数位置本身在输出前,无需额外调整;如果出现headers already sent报错,检查文件是否存在BOM头。
3、修改保存后,不需要更新帝国CMS后台缓存,直接生效。
4、不止会员member模块,后台设置关闭的任意模块都会走这套逻辑统一返回403禁止访问。
