ZBlogCMS Apache 伪静态设置方法是什么
照这篇做完,你能让 ZBlog 后台开启伪静态后不再 404,把 ?id=123 这类动态地址换成 /post/123.html 这样的静态样式链接。
ZBlog 的伪静态分两半:一半在服务器(Apache 要把请求转发给 index.php),一半在 ZBlog 后台(选伪静态模式)。只改一边,结果就是满屏 404。下面按顺序做。
第一步:确认 Apache 开了 mod_rewrite 模块
这一步要拿到的结果是:服务器具备重写能力。没有它,后面写什么规则都没用。
如果你是宝塔面板:左侧「软件商店」→ 找到已安装的 Apache → 点「设置」→「配置修改」,在配置文件里搜索 mod_rewrite.so,确认这一行前面没有 #:
LoadModule rewrite_module modules/mod_rewrite.so
如果是 Linux 命令行装的 Apache,执行:
apachectl -M | grep rewrite
输出里有 rewrite_module (shared) 就说明已加载。没有的话,Debian/Ubuntu 用 a2enmod rewrite,CentOS 在 /etc/httpd/conf/httpd.conf 里取消注释后重启。
注意:改完配置文件必须重启 Apache 才生效。宝塔点「重载配置」或「重启」,命令行用
systemctl restart httpd(CentOS)或systemctl restart apache2(Debian/Ubuntu)。
第二步:让站点目录允许读取 .htaccess
这一步要拿到的结果是:Apache 愿意读你等下要放的 .htaccess 文件。默认配置常常是 AllowOverride None,那就是把你的规则当空气。
打开 Apache 主配置文件,找到站点目录对应的 <Directory> 段,把 AllowOverride 改成 All:
<Directory "/www/wwwroot/你的域名">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
宝塔面板更省事:网站 → 找到你的站点 → 「设置」→「配置文件」,同样找 <Directory> 段改 AllowOverride All,保存后重载。
注意:不要图省事把
AllowOverride All写在根目录全局,只给你这个站点目录开,安全上更稳。
第三步:在网站根目录放 .htaccess
这一步要拿到的结果是:动态请求被转发到 index.php。文件位置必须是 ZBlog 的根目录,和 index.php、zb_users 同级。
用 FTP 或面板文件管理器新建文件,文件名就叫 .htaccess(注意前面有个点,Windows 记事本另存时文件名要写成 ".htaccess" 带引号),内容如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
如果 ZBlog 装在子目录(比如 域名/blog/),把 RewriteBase / 改成 RewriteBase /blog/,最后一行改成 RewriteRule . /blog/index.php [L]。
注意:如果你用的是宝塔,也可以在「网站 → 设置 → 伪静态」里选
zblog模板,它会自动写入等价规则,不用手写。但选了模板后别再去手改.htaccess,两边规则冲突会出怪问题。
注意:
RewriteCond %{REQUEST_FILENAME} !-f两行的作用是「文件或目录真实存在就直接返回」,缺了这两行,/zb_users/下的 CSS、图片全会被转发给 PHP,页面会变成白板。
第四步:ZBlog 后台开启伪静态
这一步要拿到的结果是:ZBlog 内部按静态样式生成链接。
用管理员登录后台(默认 /zb_system/login.php),进入「网站设置」→「静态化管理」(部分 1.7 版本显示为「伪静态设置」),把模式切换为「伪静态」,保存。
如果后台没有这一项,去「应用中心」搜索官方「静态化」插件,安装启用后同样在这个位置配置。
注意:切换模式后一定要点「清空缓存并重新编译模板」(后台右上角或「网站设置 → 清空缓存」),否则前台还是旧链接。改完随手打开一篇文章,看地址栏是不是变成了静态样式,能正常打开才算成功。
第五步:验证与排查
访问一篇文章或分类页,地址不带 ? 参数且能正常显示,就说明配置完成。
如果仍然 404,按顺序排查:AllowOverride 是否真的改到了本站点目录;mod_rewrite 是否已加载;.htaccess 是否在根目录且文件名没变成 .htaccess.txt;RewriteBase 是否和实际子目录一致。宝塔用户注意看「伪静态」页签是否处于「未启用」状态。
小结
- Apache 端三件事:开
mod_rewrite、站点目录AllowOverride All、根目录放.htaccess。 .htaccess里两条RewriteCond判断文件/目录是否存在,不能省。- ZBlog 后台「网站设置 → 静态化管理」切到伪静态,改完清缓存。
- 子目录安装要同步改
RewriteBase和RewriteRule的目标路径。 - 出问题先查服务器三件事,再查后台设置,顺序反了会白折腾半天。
原文链接:https://www.gj0.com/thread-179.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。