apache url重定向核心是启用mod_rewrite模块并配置rewriteengine on,在或中编写规则;需取消httpd.conf中loadmodule rewrite_module行注释,设置allowoverride all,并重启服务生效。

在 httpd.conf 中配置 Apache 的 URL 重定向,核心是启用 mod_rewrite 模块,并在 <virtualhost></virtualhost> 或 <directory></directory> 块中写入重写规则。这种方式适合有服务器管理权限的用户(如 VPS、独立服务器),比 .htaccess 更高效、更可控。
关键前提:确保 mod_rewrite 已启用
打开 httpd.conf,确认以下两行已取消注释(即去掉前面的 #):
LoadModule rewrite_module modules/mod_rewrite.so
并在对应 <directory></directory> 或全局 <virtualhost></virtualhost> 区域内,确保允许重写:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<directory>
AllowOverride All
Require all granted
</directory>
⚠️ 注意:
AllowOverride All不是必须写在全局,而是要作用于你希望生效的目录路径;若只针对某个站点,建议写在对应的<virtualhost></virtualhost>内部的<directory></directory>块中。
直接在 httpd.conf 中写重定向的常见方式
1. 简单的 301 域名跳转(比如 www → 非 www)
<virtualhost>
ServerName example.com
ServerAlias www.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com$1 [R=301,L]
</virtualhost>
-
RewriteCond判断请求头中的域名是否匹配www.example.com -
RewriteRule将整个路径$1保留并跳转到新地址 -
[R=301,L]表示永久重定向,且此规则为最后一条(不再匹配后续规则)
2. HTTP → HTTPS 全站强制跳转
<virtualhost>
ServerName example.com
ServerAlias www.example.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</virtualhost>
-
%{HTTPS}变量值为on或off,这里判断非 HTTPS 请求 -
%{HTTP_HOST}自动获取当前访问的域名,保持跳转后域名一致
3. 路径级重定向(如旧页面迁移到新路径)
<virtualhost>
ServerName example.com
RewriteEngine On
RewriteRule ^/old-page\.html$ /new-section/intro.html [R=301,L]
RewriteRule ^/products/(\d+)$ /items?id=$1 [R=301,L]
</virtualhost>
- 第一条:精确匹配
/old-page.html,跳转到新静态路径 - 第二条:用
(\d+)捕获数字 ID,通过$1引用,跳转为查询参数形式
注意事项
- 所有
RewriteRule的匹配路径不包含域名和协议,只匹配 URI 路径(如/about.html,不是http://...) - 正则表达式中特殊字符(如
.、?、/)需转义(\.表示字面点号) -
[L]标志很重要:表示“Last”,避免后续规则干扰;搭配[R=301]才真正触发浏览器跳转 - 修改
httpd.conf后必须重启 Apache 生效:sudo systemctl restart httpd # CentOS/RHEL # 或 sudo systemctl restart apache2 # Debian/Ubuntu
重定向逻辑清晰、规则简洁就能稳定运行。不需要复杂嵌套,优先用 RewriteCond + RewriteRule 组合处理条件性跳转,日常需求基本覆盖。










