在Apache虚拟主机中用Redirect指令做301重定向是最直接、易读且无需mod_rewrite的方式,适用于旧域名整体跳转、单页迁移或www规范,需启用mod_alias、置于内、显式写301、源路径以/开头、目标为完整URL,匹配为前缀匹配。
在apache虚拟主机中用redirect指令做301重定向,是最直接、易读且无需启用mod_rewrite的方式,适合单页或简单路径跳转。
适用场景和前提条件
该方法适用于:旧域名整体跳转到新域名、某个旧页面永久迁移到新地址、或统一规范带www与不带www的访问入口。前提是Apache已启用mod_alias模块(默认开启),且虚拟主机配置可编辑(如VPS或独立服务器);虚拟主机面板用户建议优先使用后台“301转向”功能,避免手动改配置出错。
基本语法与写法要点
Redirect指令必须放在块内,不能写在.htaccess中(.htaccess只支持RedirectMatch或mod_rewrite方式)。关键点包括:
- 状态码必须显式写为
301,否则默认是302临时跳转 - 源路径以
/开头,表示相对于网站根目录的URI路径 - 目标URL必须是完整地址(含协议和域名),例如
https://new.com/ - 路径匹配是前缀匹配,不是正则;如
Redirect 301 /old /new会同时匹配/old、/old-page、/old/abc
常见配置示例
以下为真实可用的虚拟主机配置片段(放在或内):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 整个旧域名跳转到新域名(HTTP→HTTPS):
Redirect 301 / https://www.newsite.com/ - 仅跳转某旧页面到新页面:
Redirect 301 /about.html https://www.newsite.com/about-us/ - 将不带www的请求统一跳转到带www版本:
Redirect 301 / http://www.example.com/(需配合ServerName和ServerAlias设置)
验证与注意事项
配置完成后需重启Apache(sudo systemctl restart apache2或sudo service httpd restart)。验证是否生效的方法:
- 用
curl -I http://old.com/oldpage.html查看响应头是否含HTTP/1.1 301 Moved Permanently和Location: https://... - 检查浏览器地址栏是否自动跳转,且地址栏显示新URL
- 避免循环跳转:确保目标URL不被同一规则再次匹配(例如不要把
/重定向到自身子路径) - HTTPS站点务必使用
https://开头的目标地址,否则可能触发混合内容警告或跳转失败










