欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

帝国cms教程

帝国CMS7.5关闭会员模块提示页面优化方案

帝国cms教程 我的站长站 2026-09-05 共0人阅读

帝国CMS默认关闭会员等模块后,访问“/e/member/register/ChangeRegister.php”,函数只会直接输出简单文字 member is closeHTTP状态码依旧返回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禁止访问。