伪静态失效八成因mod_rewrite未启用:需验证apache2ctl -m | grep rewrite输出rewrite_module (shared),取消httpd.conf中loadmodule注释并重启;同时确保站点配置allowoverride all及require all granted,.htaccess置于根目录且含rewriteengine on。
伪静态失效,八成不是规则写错了,而是 mod_rewrite 根本没启动。apache 不会报错提醒你模块没开,它只会安静地跳过所有 .htaccess 里的 rewrite 指令——结果就是页面 404、链接打不开、路由不生效。
确认模块是否真实加载
宝塔面板里勾选“rewrite”模块 ≠ 实际启用。必须验证运行时是否加载:
- 执行命令:apache2ctl -M | grep rewrite(Ubuntu/Debian)或 httpd -M | grep rewrite(CentOS)
- 正确输出应为:rewrite_module (shared)
- 若无任何输出:说明模块未加载。需编辑主配置文件(如 /www/server/apache/conf/httpd.conf),取消这行注释:
LoadModule rewrite_module modules/mod_rewrite.so - 改完后必须执行 bt restart 8 或通过宝塔「重启 Apache」,仅「重载配置」不会重新加载模块
检查站点配置是否允许 .htaccess 覆盖
即使模块开了,Apache 默认禁止 .htaccess 生效。关键在
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 进入宝塔「网站 → 对应站点 → 配置文件」,找到对应根目录的
块 - 确认包含且仅包含:AllowOverride All(不能是 FileInfo、None 或 AuthConfig)
- Apache 2.4+ 还必须有:Require all granted(漏掉会导致 403 错误,且无明确提示)
- 改完立即点「重载配置」,不要跳过这步
HTTPS 站点要单独配 Directory 块
HTTP 和 HTTPS 是两个独立的虚拟主机,*:80 里配好了,不代表 *:443 也生效:
- 在配置文件中找到
段落 - 手动补全匹配你网站根目录的
块(路径必须和 DocumentRoot 完全一致) - 块内必须同时含:AllowOverride All 和 Require all granted
- 删掉旧式写法如 Order allow,deny 和 Allow from all —— 它们在 Apache 2.4+ 中已废弃
验证 .htaccess 文件本身
文件存在 ≠ 能用。常见硬伤:
- 必须放在网站实际根目录(即 DocumentRoot 所指路径),可用 ls -l /www/wwwroot/your-domain.com 核对
- 文件名必须是 .htaccess(注意开头的点),权限建议设为 644
- 内容需包裹在
中,且开启引擎:
RewriteEngine On - 避免被宝塔「防跨站攻击」拦截:临时关闭该功能测试,确认是否由此导致静默失效










