整个过程主要分为三大步:

- 服务器环境配置:让 Web 服务器(如 Apache/Nginx)支持 Rewrite 规则。
- Discuz! 后台设置:告诉 Discuz! 使用伪静态规则。
- 服务器软件配置:将 Discuz! 的规则应用到服务器上。
下面我将为你详细讲解针对不同服务器环境的开启方法。
第一步:准备工作(检查是否已开启)
在开始之前,最好先确认你的 Discuz! 是否已经内置了伪静态规则。
- 登录你的 Discuz! 后台。
- 进入 全局 -> SEO设置 -> URL静态化。
- 你可以看到 Discuz! 支持的 Rewrite 规则列表,如果你的服务器环境(如 Apache 2.x)在列表中,说明 Discuz! 已经为你准备好了规则文件,你只需要在服务器上应用它即可。
第二步:针对不同服务器环境的配置方法
使用 Apache 服务器(最常见)
Apache 服务器开启伪静态非常简单,因为它通常内置了 mod_rewrite 模块。
方法A:使用 Discuz! 内置的 .htaccess 文件(推荐)

这是最简单、最安全的方法,Discuz! 已经为你写好了所有规则。
-
找到文件:
- 登录你的 FTP 或服务器管理工具(如 cPanel, 宝塔面板等)。
- 进入 Discuz! 的 安装根目录(
public_html/或wwwroot/)。 - 查找是否存在一个名为
.htaccess的文件。
-
编辑文件:
.htaccess文件存在,用文本编辑器(如 Notepad++, VS Code)打开它。- 如果文件不存在,新建一个名为
.htaccess的文件(注意前面的点,没有文件名后缀),并将以下代码完整复制进去:
# 将 RewriteEngine 模式打开 RewriteEngine On # Discuz! 伪静态规则 # 修改以下语句中的 /discuz/ 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz/ 删除 RewriteBase / RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^home-(space|space|network)-(.+)\.html$ home.php?mod=space&$1=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^([a-z]+)-(.+)\.html$ $1.php?/$2&%1- 关键点:找到
RewriteBase /这一行,如果你的 Discuz! 安装在子目录(http://yourdomain.com/forum/),你需要将其修改为RewriteBase /forum/,如果在根目录,则保持 不变。
-
保存文件:
(图片来源网络,侵删)- 保存文件,并确保其文件名就是
.htaccess。 - 通过 FTP 上传到你的网站根目录,并设置文件权限为 644(在 Linux 服务器上,这表示所有者可读写,组和其他用户只读)。
- 保存文件,并确保其文件名就是
方法B:在 httpd.conf 中配置(不推荐新手)
如果你没有 .htaccess 文件或权限,可以直接修改 Apache 的主配置文件 httpd.conf。
- 找到你的网站虚拟主机配置段(
<VirtualHost>)。 - 确保
AllowOverride None被修改为AllowOverride All,这样才能让.htaccess文件生效。 - 在
<Directory>指令块中,加入上面的 Rewrite 规则。 - 保存后,重启 Apache 服务:
service httpd restart。
使用 Nginx 服务器
Nginx 的配置方式和 Apache 完全不同,你需要手动修改 Nginx 的配置文件。
-
找到配置文件:
- 登录你的服务器,找到 Nginx 的网站配置文件,通常位于
/etc/nginx/sites-available/或/usr/local/nginx/conf/vhost/目录下,文件名是你的域名。
- 登录你的服务器,找到 Nginx 的网站配置文件,通常位于
-
编辑配置文件:
- 用
vim或其他编辑器打开该文件。 - 在
server { ... }块内,location / { ... }的上方或内部,添加以下 Discuz! 的 Rewrite 规则:
# Discuz! 伪静态规则 location / { try_files $uri $uri/ /index.php?$query_string; } # 如果你的论坛在根目录,以下规则可以省略 # 如果在子目录,请将 /forum/ 替换为你的实际目录 # location /forum/ { # try_files $uri $uri/ /forum/index.php?$query_string; # }try_files指令:这是 Nginx 实现伪静态的核心,它会按顺序检查文件是否存在,如果都不存在,就会把请求重写到index.php,并把原始的查询字符串( 后面的部分)传递过去。
- 用
-
保存并重启 Nginx:
-
保存配置文件。
-
执行以下命令重启 Nginx 使配置生效:
# 如果使用 systemctl systemctl restart nginx # 或者直接使用 nginx 命令 /etc/init.d/nginx restart
-
第三步:在 Discuz! 后台开启伪静态
完成服务器端的配置后,最后一步就是在 Discuz! 后台启用它。
- 登录 Discuz! 后台。
- 进入 全局 -> SEO设置 -> URL静态化。
- 在 “选择 Rewrite 规则” 的下拉菜单中,选择你服务器对应的环境(
Apache 2.x)。 - 务必勾选“开启 Rewrite 功能” 这个选项。
- 点击 “提交”。
第四步:验证是否成功
完成以上所有步骤后,如何验证伪静态是否成功开启?
- 清除缓存:先在浏览器中按
Ctrl + F5强制刷新页面,清除浏览器缓存。 - 检查 URL:浏览你的论坛,点击一个帖子、版块或文章,观察浏览器地址栏中的 URL 是否已经从类似
forum.php?mod=viewthread&tid=12345的形式,变成了thread-12345-1-1.html这样的形式。 - 检查后台状态:回到后台的 URL静态化 页面,如果开启成功,通常会显示一个绿色的“√”图标或“规则已生效”的提示。
- 使用命令行测试(高级):
- Apache: 在服务器上执行
apachectl -t或httpd -t,如果没有报错说明语法正确。 - Nginx: 在服务器上执行
nginx -t,如果显示test is successful则说明配置语法正确。
- Apache: 在服务器上执行
常见问题与解决方法
-
Q: 开启后页面打不开了,或者出现 404 错误。
- A: 这通常是服务器配置错误。
- Apache: 检查
.htaccess文件是否正确上传,RewriteBase路径是否正确,以及AllowOverride是否设置为All。 - Nginx: 检查
try_files规则是否添加到了正确的location块中,语法是否有误(可以用nginx -t测试)。
- Apache: 检查
- 解决方法:先暂时将服务器配置恢复原状,然后重新、仔细地按照步骤操作一遍。
- A: 这通常是服务器配置错误。
-
Q: 后台显示“规则未生效”。
- A: 99% 的情况是服务器端(
.htaccess或 Nginx 配置文件)的规则没有生效,请重点检查服务器的配置,确保你修改的文件是正确的,并且已经保存并重启了服务。
- A: 99% 的情况是服务器端(
-
Q: 宝塔面板如何操作?
- A: 在宝塔面板中非常简单。
- Apache: 进入“文件”管理,找到网站根目录,编辑或新建
.htaccess文件,将规则粘贴进去即可。 - Nginx: 进入“网站”列表,点击你的域名,选择“配置”,在
server段中找到location / { ... },将try_files规则添加进去,然后点击“保存”并“重启 Nginx”。
- Apache: 进入“文件”管理,找到网站根目录,编辑或新建
- A: 在宝塔面板中非常简单。
开启伪静态的核心就是“服务器配置文件 + Discuz! 后台开启”,只要按照你的服务器类型选择对应的方法,仔细操作,通常都能成功。
