ZBlogCMS 伪静态该如何配置
照着这篇做完,你能在 Apache、Nginx、IIS(含宝塔面板)三种环境下把 ZBlogPHP 的伪静态彻底配好,并在出现 404 时知道从哪一层排查。
第一步:在后台把 URL 模式切成「伪静态」
这一步决定 ZBlogPHP 是否生成不带 index.php 的链接,做完后你就能看到该用哪套规则。
登录后台(默认地址 http://你的域名/zb_system/login.php),左侧菜单点 「网站设置」→「静态管理」。页面顶部有三个单选项:动态、伪静态、纯静态,选中 「伪静态」,然后点页面下方的 「提交」 按钮。
提交后,页面下半部分的 「伪静态规则」 文本框会自动显示当前应该使用的规则。文本框上方有服务器类型切换(Apache / Nginx / IIS / IIS7+),点 「复制」 按钮把规则复制到剪贴板,下一步直接用。
注意:本文以 Z-BlogPHP 1.7.3 为例,1.5 / 1.6 版本的菜单位置一致,只是按钮文案可能叫「保存」。如果你之前选过「纯静态」,必须先切回「伪静态」或「动态」,否则规则不生效。
第二步:Apache 环境写 .htaccess
这一步让 Apache 把不存在的路径转发给 index.php,做完后文章页地址会变成 /post/1.html 这类形式。
用 FTP 或主机面板的文件管理器,进入网站根目录(和 index.php、zb_system 同一层),新建或编辑文件 .htaccess,粘贴后台复制来的规则。典型内容如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
保存后访问一篇未登录状态下的文章页验证。
注意:三个前提必须同时满足——Apache 已加载
mod_rewrite模块、站点配置里AllowOverride All、.htaccess编码为 UTF-8 无 BOM。另外 Windows 系统不允许直接新建以点开头的文件,请用面板文件管理器创建,或先建htaccess.txt再重命名。
第三步:Nginx 环境(含宝塔)配置
这一步让 Nginx 把请求交给 PHP 入口,做完后 Nginx 站点同样支持无 index.php 的链接。
宝塔面板用户:登录宝塔 → 左侧 「网站」 → 找到你的站点,点右侧 「设置」 → 顶部标签 「伪静态」 → 下拉框选择 「zblog」 模板(没有就选「自定义」),把后台复制的规则粘进输入框 → 点 「保存」。
手动配置 Nginx 的用户:编辑站点配置文件(一般在 /www/server/panel/vhost/nginx/你的域名.conf 或 /etc/nginx/conf.d/站点.conf),在 server { } 块内加入:
location / {
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php) {
rewrite (.*) $1/index.php;
}
if (!-f $request_filename) {
rewrite (.*) /index.php;
}
}
保存后执行 nginx -t 检查语法,通过再 systemctl reload nginx 或 nginx -s reload。
注意:宝塔用户不要在「配置文件」里手写这段规则,面板重载时会覆盖。改完 Nginx 一定要 reload,只保存文件不 reload 等于没改。
第四步:IIS 环境配置
这一步让 IIS 通过 URL Rewrite 模块支持伪静态,做完后 Windows 服务器也能正常访问。
先安装 URL Rewrite 2.0 模块(微软官网下载,装完重启 IIS)。然后在 IIS 管理器 → 你的站点 → 「URL 重写」,右侧点 「导入规则」,把后台复制的 web.config 内容粘贴进去,或者直接把规则文件放进网站根目录。若是老版本 IIS 用 ISAPI_Rewrite,则把后台给的 httpd.ini 规则写入站点根目录同名文件。
第五步:验证与 404 排查
这一步确认配置真正生效。打开一篇文章,地址栏应该是 域名/post/xxx.html 而不是 域名/index.php?post=xxx。命令行验证:curl -I http://你的域名/post/1.html,返回 HTTP/1.1 200 OK 即成功。
如果首页正常、文章页 404:八成是规则没加载(Apache 查 AllowOverride,Nginx 查是否 reload,宝塔查是否保存成功)。如果分类页、标签页 404:去后台 「网站设置」→「静态管理」 重新提交一次,再到后台首页点 「清空缓存并重新编译模板」。如果所有页面都 500:规则语法写错了,先注释掉规则恢复访问。
注意:切换伪静态后,搜索引擎已收录的
index.php?动态链接会失效。可以在.htaccess或 Nginx 里保留动态入口,或者接受一段时间的收录波动。
小结
- 后台 「网站设置」→「静态管理」 选「伪静态」并提交,是整件事的开关。
- 规则一定用后台「复制」功能拿到的官方版本,别手抄网上的旧规则。
- Apache 看
.htaccess+mod_rewrite+AllowOverride All;Nginx 用宝塔「伪静态」输入框、改完必须 reload;IIS 装 URL Rewrite 2.0。 - 报错先分层排查:500 是语法错,404 是规则没生效,只有分类页异常多半是缓存。
- 配置完成后清一次缓存并重新编译模板,再用
curl -I验证状态码。
原文链接:https://www.gj0.com/thread-132.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。