Discuz X3.4 自定义域名绑定二级目录需要通过 Web 服务器将域名根目录指向程序所在文件夹,并在后台全局设置中更新域名配置。适用场景为独立域名访问论坛,风险边界在于 Cookie 域不一致会导致登录状态丢失。
先说结论:服务器解析优先于程序设置,先通域名再改配置
- 适合:需要将/forum 等子目录通过独立域名直接访问的场景
- 先准备:完成 DNS 解析并将 Web 服务器根目录指向 Discuz 安装路径
- 验收:前台 URL 显示新域名且登录状态保持正常
快速处理思路
配置核心在于 Web 服务器根目录映射与 Discuz 后台域名设置同步。
1. 确认 Discuz 程序所在服务器路径,例如/www/wwwroot/site/bbs。
2. 在 Nginx 或 Apache 中创建新的站点配置,将 server_name 设为自定义域名,root 指向上述路径。
3. 登录 Discuz 后台,进入全局 -> 域名设置,填写新域名并保存。
为什么会这样
Discuz 程序本身不控制域名解析,仅负责识别请求中的 Host 头。
Web 服务器决定哪个域名访问哪个文件夹。如果仅修改 Discuz 后台域名而服务器仍指向旧目录,会导致 404 错误或静态资源加载失败。Cookie 作用域依赖于域名设置,域名变更会导致原有 Session 失效。
分步处理
按顺序执行服务器配置、程序配置和伪静态规则更新。
第一步:Web 服务器配置
Nginx 示例配置将 root 指向 Discuz 子目录:
server { listen 80; server_name bbs.example.com; root /www/wwwroot/site/bbs; }
第二步:Discuz 后台设置
登录管理中心,找到全局 -> 域名设置。在应用域名设置中,将论坛首页域名填写为 bbs.example.com。
第三步:伪静态规则
确保新站点配置中包含了 Discuz 对应的伪静态规则文件,防止帖子链接出现 404。
怎么验证是否生效
通过浏览器访问新域名并检查登录状态与资源加载。
1. 访问 http://bbs.example.com,确认页面正常显示且 URL 中不带/bbs 路径。
2. 尝试登录账号,刷新页面后确认登录状态未丢失。
3. 查看页面源代码,确认 CSS 和 JS 文件加载路径是否为新域名。
常见坑
Cookie 域配置错误和静态资源路径硬编码是主要故障点。
1. Cookie 域:如果主站是 example.com,论坛是 bbs.example.com,需确保 Cookie 域设置为.example.com 或各自独立。
2. 静态资源:模板中若有硬编码的旧域名链接,需手动替换或重新缓存模板。
3. HTTPS 证书:新域名需单独配置 SSL 证书,否则浏览器会报不安全。
常见问题
绑定后登录立即退出怎么办
Cookie 域名设置不匹配导致 Session 无法识别。
检查后台全局 -> 域名设置中的 Cookie 域字段,确保与当前访问域名一致或为上级域名。
页面样式混乱丢失 CSS 文件
静态资源路径仍指向旧域名或子目录路径。
在后台更新缓存,并检查模板文件中是否存在硬编码的绝对路径链接。
伪静态规则失效出现 404
新站点配置未加载 Rewrite 规则。
在 Nginx 配置中添加 include 路径指向 Discuz 提供的伪静态规则文件。