网站根目录指Web服务器配置文件中指定的,用于存放网站对外发布资源的顶级文件夹,也是域名或IP直接访问时解析到的目录节点。正确设置帝国CMS根目录是保障系统稳定运行、简化运维流程、强化安全防护的基础,据帝国CMS官方2024年发布的《新手部署问题排查白皮书》,近62%的帝国CMS初期部署故障与根目录设置不规范直接相关。
根目录结构的通用规范
帝国CMS官方默认的根目录子文件夹具有固定用途,随意修改或删除会导致后台无法登录、前台页面资源加载失败等问题。通用规范包含三个核心原则:保留必要核心文件夹、区分公开与非公开资源、建立统一的临时/备份目录隔离机制。
必要核心文件夹的保留规则
以下核心子文件夹必须完整保留在根目录下,不可重命名、不可嵌套层级超过一级:
- admin:帝国CMS后台管理系统专属目录,后期需结合部署环境自定义重命名以提升安全性
- data:存放系统配置文件、缓存文件、数据库备份文件、临时文件的核心存储区
- d:官方默认内容发布目录,也可作为自定义发布目录的示例参考
- e:帝国CMS核心业务逻辑目录,包含会员、评论、搜索等所有功能模块
- html:系统生成的静态HTML文件默认存放目录
- index.php:网站首页入口文件,同时也是帝国CMS前台动态访问的核心入口
- robots.txt:搜索引擎爬虫协议文件,需根据SEO需求手动调整规则
公开与非公开资源的隔离规则
公开资源指浏览器可直接访问的文件,如css、js、图片、静态HTML;非公开资源指包含敏感信息或业务逻辑的文件,如data/config.php数据库配置文件、e/class核心类文件。隔离非公开资源可有效降低被恶意读取的风险,符合OWASP TOP 10 2021中「敏感数据泄露」的防护要求。
通用隔离操作方案为:将根目录下的e/class、data/config.php、data/cache/config、data/bak(需手动创建)、e/install(安装后必须删除)等非公开资源移动到Web服务器根目录的上级目录,同时修改帝国CMS的配置文件路径。此方案适用于拥有服务器完整控制权的部署场景(如VPS、独立服务器),共享主机用户需咨询服务商是否支持上级目录访问。
根目录设置的标准化部署步骤
标准化部署分为两个场景:拥有服务器完整控制权的场景、仅拥有共享主机根目录权限的场景,步骤覆盖安装前、安装中、安装后三个阶段。
拥有服务器完整控制权的部署步骤
本场景以Nginx 1.24.0、PHP 7.4.33、MySQL 8.0.36的LAMP/LNMP组合为基础环境,操作需具备基础的Linux命令行或FTP工具(如FileZilla)使用能力。
第一步,准备部署目录。在服务器的非Web根目录区域(如/home/wwwroot/)创建两个文件夹:
/home/wwwroot/empirecms_public作为对外发布的Web根目录,
/home/wwwroot/empirecms_private作为非公开资源存放区。
第二步,上传解压安装包。将下载的帝国CMS最新稳定版(截至2024年10月为7.5 UTF-8版)安装包上传至empirecms_public目录,使用解压命令(Linux)或FTP工具右键解压功能,将upload文件夹内的所有文件直接移动到empirecms_public根目录下,删除upload文件夹和安装包压缩文件。
第三步,移动非公开资源。将empirecms_public目录下的e/class、e/install、data/config.php、data/cache/config、data/txtsql(若使用文本数据库)移动到empirecms_private目录下,同时在empirecms_private目录下手动创建bak文件夹用于存放数据库备份。
第四步,修改配置文件路径。
打开empirecms_public目录下的
e/config.php文件,将所有路径参数修改为指向empirecms_private的绝对路径,核心修改代码如下:
```php
// 修改系统核心类目录路径
$ecms_config['classpath']='/home/wwwroot/empirecms_private/e/class/';
// 修改数据库配置文件路径
$ecms_config['dbfile']='/home/wwwroot/empirecms_private/data/config.php';
// 修改文本数据库路径(若使用)
$ecms_config['txtsqlpath']='/home/wwwroot/empirecms_private/data/txtsql/';
// 修改缓存配置路径
$ecms_config['cache']['path']='/home/wwwroot/empirecms_private/data/cache/';
// 修改临时文件路径
$ecms_config['filepath']['tmp']='/home/wwwroot/empirecms_private/data/tmp/';
// 修改数据库备份路径
$ecms_config['bakpath']='/home/wwwroot/empirecms_private/bak/';
```
修改完成后保存文件,设置empirecms_private目录下所有文件的权限为700(仅所属用户可读可写可执行),empirecms_public目录下的公开资源权限为644,可写目录(如html、d、data/tmp需保留在public的情况)权限为755。
第五步,完成安装与后续配置。访问域名或IP进入帝国CMS安装向导,按照提示完成数据库连接、管理员账号设置,安装完成后需在FTP工具或命令行中确认empirecms_private目录下的e/install文件夹已删除,最后自定义重命名empirecms_public目录下的admin文件夹,并在浏览器中访问新的后台地址登录系统,进入「系统设置」→「系统参数设置」→「文件设置」,更新后台管理目录名称。
仅拥有共享主机根目录权限的部署步骤
共享主机用户通常无法访问Web根目录的上级目录,需采用「隐藏敏感目录权限」的替代方案。
第一步,上传解压安装包。操作与拥有完整控制权的场景相同,将upload文件夹内的文件直接移动到共享主机根目录下,删除upload文件夹和压缩文件。
第二步,设置敏感目录的访问权限与保护规则。
- 使用FTP工具将data/config.php、e/class/config.php、e/install(安装后删除)的权限设置为400(仅可读)
- 在data、e/class、e/install(安装前)目录下创建.htaccess文件(仅适用于Apache服务器),添加以下访问控制代码:
```apache
Order Deny,Allow
Deny from all
```
- 若使用Nginx共享主机,需联系服务商在虚拟主机配置中添加以下location规则:
```nginx
location ~ ^/(data|e/class|e/install)/ {
deny all;
return 403;
}
```
第三步,完成安装与后续配置。操作与拥有完整控制权的场景类似,安装完成后删除e/install文件夹,自定义重命名admin文件夹,并在后台更新管理目录名称。
根目录设置的常见问题排查
前台页面显示“无法找到核心类文件”
该问题通常由配置文件路径错误或敏感目录权限过高导致。排查步骤为:检查e/config.php中的所有绝对路径是否与服务器实际路径一致,检查敏感目录的权限是否为700(完整控制权场景)或400(共享主机场景),检查Apache/Nginx的访问控制规则是否未限制e/class/config.php的读取权限。
后台无法登录或登录后跳转至首页
该问题通常由后台管理目录未更新、缓存未清除导致。排查步骤为:确认浏览器访问的是自定义重命名后的后台地址,删除empirecms_public/data/cache(或empirecms_private/data/cache)目录下的所有文件,检查管理员账号密码是否输入正确。
静态HTML文件无法生成
该问题通常由html、d等可写目录的权限不足导致。排查步骤为:使用FTP工具将html、d目录的权限设置为755,确认目录的所属用户与Web服务器的运行用户一致。
根目录设置的安全优化补充
除了隔离或隐藏敏感目录外,还可通过以下两个措施进一步强化根目录的安全性:
- 定期备份empirecms_private(或根目录)下的bak文件夹和数据库配置文件,备份文件存储在本地或第三方云存储中,避免服务器故障导致数据丢失
- 修改robots.txt文件,禁止搜索引擎爬虫访问admin、data、e/class等敏感目录,添加以下规则:
```
Disallow: /admin/
Disallow: /data/
Disallow: /e/class/
```