Apache mod_rewrite生效需两处权限:一是启用模块(如a2enmod rewrite或取消LoadModule注释,并验证rewrite_module共享状态),二是授权目录重写(在Directory块中设AllowOverride All并加Options +FollowSymLinks,虚拟主机内须单独配置)。

必须启用 mod_rewrite 模块
模块没加载,所有规则都无效。不能只看配置文件里有没有那行,得确认它真在运行:
- Debian/Ubuntu 系统:运行
sudo a2enmod rewrite && sudo systemctl restart apache2 - CentOS/RHEL 系统:检查
/etc/httpd/conf.modules.d/00-base.conf或/etc/httpd/conf/httpd.conf,确保这行未被注释:LoadModule rewrite_module modules/mod_rewrite.so - 验证是否生效:
httpd -M | grep rewrite(RHEL)或apache2ctl -M | grep rewrite(Debian),输出含rewrite_module (shared)才算成功
必须授权目录使用重写指令
即使模块开着,Apache 默认禁止 .htaccess 里的 RewriteRule。必须显式放行:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 找到对应站点的
<Directory>块(可能在apache2.conf、httpd.conf或虚拟主机配置如sites-enabled/xxx中) - 把
AllowOverride None改为AllowOverride All(或至少AllowOverride FileInfo,但All更稳妥) - 同时建议加上
Options +FollowSymLinks,否则部分规则会触发 500 错误 - 注意:如果用的是虚拟主机,这个配置必须写在
<VirtualHost>内的<Directory>块里,不能只写在外部
文件与路径权限也要检查
规则写对了,但 Apache 读不到,照样不生效:
-
.htaccess文件需放在 Web 根目录(如/var/www/html)或子目录下 - Apache 进程用户(如
www-data或apache)必须对该文件有读取权限(chmod 644 .htaccess即可) - 路径匹配时注意:在
.htaccess中,RewriteRule匹配的是相对于当前目录的 URI 路径,开头不加斜杠(例如写^article/,不是^/article/)

















