ZBlogCMS 怎么去掉网址中的 index.php
学完这篇,你能把 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 规则做兼容。
原文链接:https://www.gj0.com/thread-859.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。