菜鸟科技网

Discuz如何开启伪静态?步骤是什么?

整个过程主要分为三大步

Discuz如何开启伪静态?步骤是什么?-图1
(图片来源网络,侵删)
  1. 服务器环境配置:让 Web 服务器(如 Apache/Nginx)支持 Rewrite 规则。
  2. Discuz! 后台设置:告诉 Discuz! 使用伪静态规则。
  3. 服务器软件配置:将 Discuz! 的规则应用到服务器上。

下面我将为你详细讲解针对不同服务器环境的开启方法。


第一步:准备工作(检查是否已开启)

在开始之前,最好先确认你的 Discuz! 是否已经内置了伪静态规则。

  1. 登录你的 Discuz! 后台
  2. 进入 全局 -> SEO设置 -> URL静态化
  3. 你可以看到 Discuz! 支持的 Rewrite 规则列表,如果你的服务器环境(如 Apache 2.x)在列表中,说明 Discuz! 已经为你准备好了规则文件,你只需要在服务器上应用它即可。

第二步:针对不同服务器环境的配置方法

使用 Apache 服务器(最常见)

Apache 服务器开启伪静态非常简单,因为它通常内置了 mod_rewrite 模块。

方法A:使用 Discuz! 内置的 .htaccess 文件(推荐)

Discuz如何开启伪静态?步骤是什么?-图2
(图片来源网络,侵删)

这是最简单、最安全的方法,Discuz! 已经为你写好了所有规则。

  1. 找到文件

    • 登录你的 FTP 或服务器管理工具(如 cPanel, 宝塔面板等)。
    • 进入 Discuz! 的 安装根目录public_html/wwwroot/)。
    • 查找是否存在一个名为 .htaccess 的文件。
  2. 编辑文件

    • .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/,如果在根目录,则保持 不变。
  3. 保存文件

    Discuz如何开启伪静态?步骤是什么?-图3
    (图片来源网络,侵删)
    • 保存文件,并确保其文件名就是 .htaccess
    • 通过 FTP 上传到你的网站根目录,并设置文件权限为 644(在 Linux 服务器上,这表示所有者可读写,组和其他用户只读)。

方法B:在 httpd.conf 中配置(不推荐新手)

如果你没有 .htaccess 文件或权限,可以直接修改 Apache 的主配置文件 httpd.conf

  1. 找到你的网站虚拟主机配置段(<VirtualHost>)。
  2. 确保 AllowOverride None 被修改为 AllowOverride All,这样才能让 .htaccess 文件生效。
  3. <Directory> 指令块中,加入上面的 Rewrite 规则。
  4. 保存后,重启 Apache 服务:service httpd restart

使用 Nginx 服务器

Nginx 的配置方式和 Apache 完全不同,你需要手动修改 Nginx 的配置文件。

  1. 找到配置文件

    • 登录你的服务器,找到 Nginx 的网站配置文件,通常位于 /etc/nginx/sites-available//usr/local/nginx/conf/vhost/ 目录下,文件名是你的域名。
  2. 编辑配置文件

    • 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,并把原始的查询字符串( 后面的部分)传递过去。
  3. 保存并重启 Nginx

    • 保存配置文件。

    • 执行以下命令重启 Nginx 使配置生效:

      # 如果使用 systemctl
      systemctl restart nginx
      # 或者直接使用 nginx 命令
      /etc/init.d/nginx restart

第三步:在 Discuz! 后台开启伪静态

完成服务器端的配置后,最后一步就是在 Discuz! 后台启用它。

  1. 登录 Discuz! 后台
  2. 进入 全局 -> SEO设置 -> URL静态化
  3. “选择 Rewrite 规则” 的下拉菜单中,选择你服务器对应的环境(Apache 2.x)。
  4. 务必勾选“开启 Rewrite 功能” 这个选项。
  5. 点击 “提交”

第四步:验证是否成功

完成以上所有步骤后,如何验证伪静态是否成功开启?

  1. 清除缓存:先在浏览器中按 Ctrl + F5 强制刷新页面,清除浏览器缓存。
  2. 检查 URL:浏览你的论坛,点击一个帖子、版块或文章,观察浏览器地址栏中的 URL 是否已经从类似 forum.php?mod=viewthread&tid=12345 的形式,变成了 thread-12345-1-1.html 这样的形式。
  3. 检查后台状态:回到后台的 URL静态化 页面,如果开启成功,通常会显示一个绿色的“√”图标或“规则已生效”的提示。
  4. 使用命令行测试(高级)
    • Apache: 在服务器上执行 apachectl -thttpd -t,如果没有报错说明语法正确。
    • Nginx: 在服务器上执行 nginx -t,如果显示 test is successful 则说明配置语法正确。

常见问题与解决方法

  • Q: 开启后页面打不开了,或者出现 404 错误。

    • A: 这通常是服务器配置错误。
      • Apache: 检查 .htaccess 文件是否正确上传,RewriteBase 路径是否正确,以及 AllowOverride 是否设置为 All
      • Nginx: 检查 try_files 规则是否添加到了正确的 location 块中,语法是否有误(可以用 nginx -t 测试)。
    • 解决方法:先暂时将服务器配置恢复原状,然后重新、仔细地按照步骤操作一遍。
  • Q: 后台显示“规则未生效”。

    • A: 99% 的情况是服务器端(.htaccess 或 Nginx 配置文件)的规则没有生效,请重点检查服务器的配置,确保你修改的文件是正确的,并且已经保存并重启了服务。
  • Q: 宝塔面板如何操作?

    • A: 在宝塔面板中非常简单。
      • Apache: 进入“文件”管理,找到网站根目录,编辑或新建 .htaccess 文件,将规则粘贴进去即可。
      • Nginx: 进入“网站”列表,点击你的域名,选择“配置”,在 server 段中找到 location / { ... },将 try_files 规则添加进去,然后点击“保存”并“重启 Nginx”。

开启伪静态的核心就是“服务器配置文件 + Discuz! 后台开启”,只要按照你的服务器类型选择对应的方法,仔细操作,通常都能成功。

分享:
扫描分享到社交APP
上一篇
下一篇