Z-BlogPHP伪静态配置,Nginx环境教程
Z-BlogPHP默认使用动态URL,开启伪静态后网址更简洁,也有利于搜索引擎收录。
在Nginx环境下配置并不复杂,核心是添加一段重写规则并重载服务。
下面按零基础也能照做的顺序,讲清准备、操作、避坑和验证。
动手前先确认这几个条件
- 服务器已安装Nginx,并且Z-BlogPHP站点能正常访问。
- 你知道当前站点的Nginx配置文件路径,通常在
/etc/nginx/conf.d/或宝塔面板的网站设置里。 - 有SSH权限或宝塔面板文件编辑权限。
- 建议先备份当前Nginx配置,避免改错后无法恢复。
如果你用的是宝塔面板,直接进入“网站”->“设置”->“配置文件”,就能看到当前站点的server块。
添加Z-BlogPHP伪静态规则
Z-BlogPHP官方推荐的Nginx重写规则一般如下,请把your_domain替换成你的实际域名,并确保root指向Z-BlogPHP程序根目录。
server {
listen 80;
server_name your_domain.com;
root /www/wwwroot/your_domain.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
重点在location /里的try_files这一行。
它的作用是:先尝试请求真实存在的文件或目录,如果都不存在,就交给index.php处理,这样伪静态地址才能正确路由到Z-BlogPHP。
如果你的PHP版本不是7.4,fastcgi_pass的sock路径要改成对应版本,例如PHP 8.0可能是/tmp/php-cgi-80.sock。
不确定的话,可以在宝塔面板的PHP设置里查看。
重载Nginx并检查是否生效
配置写完后不要直接刷新网页,先测试语法,再重载服务。
nginx -t
如果输出syntax is ok和test is successful,说明配置没有语法错误。
接着执行:
systemctl reload nginx
或者用宝塔面板的“重载配置”按钮。
重载完成后,访问一篇文章的伪静态地址,例如https://你的域名/post/123.html,如果能正常打开,说明规则已经生效。
容易踩坑的几个地方
- 规则位置放错:
try_files必须放在处理PHP的location之前,否则可能被PHP规则拦截。 - 伪静态未在后台开启:Nginx规则只是让URL可访问,Z-BlogPHP后台还需要在“设置”->“链接设置”里启用伪静态,并选择对应格式。
- 缓存没清:修改后如果页面还是旧地址,清一下Z-BlogPHP缓存和浏览器缓存再试。
- HTTPS站点要同步改:如果站点用了SSL,记得在443端口的server块里也加上同样的
try_files规则,否则HTTPS访问会404。
怎么判断配置真的成功了
打开一篇文章,看浏览器地址栏是否显示为类似/post/123.html的静态形式,而不是/index.php?。
id=123
再用curl -I检查返回状态码:
curl -I https://你的域名/post/123.html
返回HTTP/1.1 200 OK表示正常。
如果返回404,优先检查root路径是否正确、try_files是否写在了正确位置,以及后台伪静态开关是否打开。
常见疑问
伪静态开了但文章页还是404怎么办?
先确认Nginx配置里root指向的是Z-BlogPHP根目录,而不是子目录;再检查try_files是否被其他location覆盖。
宝塔面板需要手动改配置文件吗?
可以在网站设置里找到“伪静态”选项,选择Z-BlogPHP模板;如果没有,就按本文规则手动添加到配置文件。
动态地址还能访问吗?
可以,伪静态不影响原来的动态入口,但建议在后台开启伪静态后统一使用静态地址,避免重复收录。
配置完成后,建议用浏览器无痕模式再访问一次,排除缓存干扰。
如果仍然异常,回看避坑部分逐项核对,通常都能解决。