ZBlogCMS 怎么去掉网址中的 index.php

liulian
liulian 初级会员超兽战士
发布于 2026-10-08 09:06 ·2 浏览 ·0 回复

学完这篇,你能把 Z-BlogPHP 站点的网址从 http://域名/index.php?id=1 这种带 index.php 的形态,改成 http://域名/post/1.html 这样干净的形式,并且知道服务器端该配哪几行规则。下面按顺序做一遍就行,本文以 Z-BlogPHP 1.7.3 为例,1.6.x 菜单名称略有差别但思路完全一样。

第一步:确认服务器支持 URL 重写

这一步的目的是先排除「服务器根本不让改」的情况,免得后面白折腾。登录你的服务器面板:

  • 用宝塔面板的,打开「软件商店」→「已安装」,看里面装的是 Nginx 还是 Apache。Nginx 自带 rewrite 支持;Apache 需要 mod_rewrite 模块,宝塔的 Apache 默认已开。
  • 用虚拟主机的,直接问空间商「是否支持伪静态 / Rewrite」,很多免费空间不开放这个权限。

注意:如果空间商明确说不支持 Rewrite,后面的步骤无法实现去 index.php,只能换空间或改用真静态模式(后台把页面模式选成「静态」,由程序生成 .html 文件)。

第二步:在后台把 URL 模式改成伪静态

这一步做完,站点链接里就不会再出现 index.php 了。进入后台(http://你的域名/zb_system/login.php),在左侧菜单点「网站设置」→「静态管理」。

在「静态管理」页面里找到那张列出各类页面的表格,通常包含「首页」「文章页」「分类页」「标签页」「日期页」「作者页」几行,每行右侧有一个下拉框,默认值是「默认」。把需要改的行都选择为「伪静态」,然后点击页面底部的「提交」按钮。

提交成功后,回到前台刷新首页,把鼠标放到任一篇文章标题上,链接应该已经变成 http://你的域名/post/1.html 这种形式。如果链接依然是 ?id=1,说明没保存成功,或者当前主题硬编码了 URL,需要检查主题。

注意:改完 URL 后建议在后台首页右上角点「清空缓存并重新编译模板」,否则有些页面还会输出旧链接。

第三步:给服务器写入 Rewrite 规则

这一步是让服务器把 /post/1.html 这类请求正确交给 PHP 处理,不做的话前台会直接 404。回到「静态管理」页面,往下拉到「Rewrite 规则」区域,先在下拉框里选你的服务器类型(Nginx 或 Apache),页面会显示对应的规则代码,复制它。

Nginx 用户(宝塔):面板 →「网站」→ 找到你的站点 → 点「设置」→ 弹窗左侧选「伪静态」→ 把代码粘贴进编辑框 → 点「保存」。Z-BlogPHP 给出的 Nginx 规则大致是:

location / {
    if (-f $request_filename) {
        break;
    }
    rewrite ^/(.*)$ /index.php/$1 last;
}

Apache 用户:同样在站点的「伪静态」里粘贴,宝塔会自动写入站点根目录的 .htaccess。规则大致是:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

保存后重载 Web 服务:宝塔「软件商店」→「已安装」→ 找到 Nginx 或 Apache → 点「重载配置」。

注意:改服务器配置前先备份原文件。规则写错会导致整站 500,此时把伪静态内容清空保存即可立刻恢复。

第四步:验证并排查 404

这一步确认改造成果。用浏览器无痕窗口依次打开首页、一篇文章、一个分类页、一个标签页,看是否正常显示且链接里没有 index.php。全部正常就完成了。如果出现 404,按下面顺序检查:

  • 伪静态规则是否粘贴到了正确的站点,而不是别的站点。
  • Nginx 是否重载了配置(改完不重载不生效)。
  • Apache 是否开启了 AllowOverride All,否则 .htaccess 会被忽略。
  • 后台「静态管理」里的下拉框是否真的保存成了「伪静态」。

注意:开启了 CDN 的站点,改完要去 CDN 控制台刷新缓存,否则访问到的还是旧页面。

小结

  • 去掉 index.php 的本质是开启伪静态,分「后台改 URL 模式」和「服务器写 Rewrite 规则」两步,缺一不可。
  • 后台入口是「网站设置」→「静态管理」,把页面模式从「默认」改成「伪静态」后点「提交」。
  • Nginx 和 Apache 的规则不同,用后台「Rewrite 规则」区域生成的代码,别手抄网上的旧版本。
  • 改完记得清缓存、重载 Web 服务、刷 CDN。
  • 旧链接不会自动跳转,如有需要可在 .htaccess 或 Nginx 里加 301 规则做兼容。
版权声明:本文来自 GJ站长论坛《ZBlogCMS 怎么去掉网址中的 index.php》
原文链接:https://www.gj0.com/thread-859.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~