伪静态不生效主因是服务器模式切换后配置未同步:Apache需AllowOverride All+rewrite模块真实加载,Nginx应禁用if重写、改用try_files,并确保运行目录与伪静态规则匹配。
伪静态不生效,90%不是规则写错了,而是服务器模式切换后配置没同步更新——Nginx 和 Apache 的生效机制完全不同,混用旧配置必然失效。
Apache 下 .htaccess 不执行:检查 AllowOverride 和模块加载
宝塔新建站点默认是
,哪怕
文件存在、语法正确,Apache 也会直接跳过它。必须进对应站点的虚拟主机配置文件(路径类似
),在
块里确认有:
(不能是
或
)
(Apache 2.4+ 必须项,缺了会 403)
改完要「重载配置」,不是「重启」;否则
可能仍看不到
—— 模块没真正加载。
Nginx 下 location / 规则被 if + rewrite 卡死:优先用 try_files
大量用户复制的 WordPress 伪静态模板还在用
,这在 Nginx 1.21+ 已被标记为“不推荐”,PHP 8.4 下更易触发重写循环或忽略 PATH_INFO。直接替换为:
关键点:
删掉所有
块,
是原子操作,性能更好也更稳定
而非
,兼容 PHP-FPM 对 QUERY_STRING 的解析逻辑
若站点含 wp-admin,单独加一行:
切换模式后伪静态模板没自动适配:别信下拉菜单里的“已选”
宝塔面板
在网站设置 → 伪静态 页面里,即使你看到下拉框显示“WordPress”,实际写入的可能是 Apache 的
或 Nginx 的
,取决于当前站点绑定的 Web 服务类型。但手动切换过 Web 服务(比如从 Apache 改为 Nginx)后,这个字段不会自动刷新。
Nginx
在宝塔面板中轻松管理Nginx高性能Web服务器。提供可视化配置反向代理、负载均衡、SSL证书及HTTP缓存功能,一键优化高并发性能,助您高效搭建稳定、快速的网站运行环境。
下载
务必执行以下动作:
进【伪静态】页,先点【删除】清空当前规则
再从下拉菜单重新选一次对应框架(如 WordPress)
保存后,SSH 执行
或
,不能只点面板上的「保存」
运行目录与伪静态共同失效:404 往往是两个配置打架
伪静态规则最终要把请求转给
,但如果宝塔「网站目录」里「运行目录」设成了
,而程序实际入口在
,那
或
找到的
就是错的路径——结果仍是 404。
检查顺序必须是:
先确认【网站】→【设置】→【网站目录】→【运行目录】是否指向真实入口(Laravel/ThinkPHP 填
,WordPress 填
)
再验证伪静态规则是否匹配该目录结构(比如
需要在规则中体现路径偏移)
最后看日志:
,出现
就是运行目录错,出现
就是规则套娃了
最常被忽略的是:改了运行目录不点「保存」,或改了伪静态不 reload 服务——两处都得动,少一步都不行。
AllowOverride None.htaccess/www/server/panel/vhost/apache/xxx.com.confAllowOverride AllFileInfoAuthConfigRequire all grantedhttpd -M | grep rewriterewrite_module (shared)if (!-f $request_filename) { rewrite ... }location / {
try_files $uri $uri/ /index.php?$args;
}iftry_files$args$query_stringrewrite ^/wp-admin$ $scheme://$host$uri/ permanent;RewriteRulelocationnginx -t && service nginx reloadbt reload 8index.php//publictry_filesRewriteRuleindex.php/public//public/index.phptail -f /www/wwwlogs/xxx.com.error.logFile not foundrewrite or internal redirection cycle