在apache虚拟主机中用redirect指令配置301重定向是最简单可靠的方式,需启用mod_alias、置于内、显式写301、源路径以/开头、目标为完整url,匹配为前缀匹配。

直接在虚拟主机配置里加 Redirect 301 指令,是最简单、可靠且无需启用 mod_rewrite 的方式,适合旧域名整体跳转、单页迁移或 www 规范统一。
用 Redirect 指令做 301 重定向
该方法要求 Apache 已加载 mod_alias(默认启用),且规则必须写在 <virtualhost></virtualhost> 块内,不能放在 .htaccess 中。
- 状态码必须显式写 301,否则默认是 302 临时跳转
- 源路径以 / 开头,表示网站根目录下的 URI 路径(如
/old) - 目标地址必须是完整 URL,含协议和域名(如
https://new.com/) - 匹配是前缀匹配:写
Redirect 301 /blog /news,会同时匹配/blog、/blog-post、/blog/2024
常见场景配置示例
以下配置片段可直接放入 <virtualhost></virtualhost> 或 <virtualhost></virtualhost> 中:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 将不带 www 的域名永久跳转到带 www 版本(需配合
ServerName和ServerAlias):Redirect 301 / https://www.example.com/ - 把整个旧域名所有请求跳转到新域名:
Redirect 301 / https://new-site.com/ - 单页迁移:
Redirect 301 /about.html https://example.com/team.html - HTTP 强制跳转 HTTPS(常用于 80 端口配置块):
Redirect permanent / https://example.com/
配置后必须执行的操作
改完配置文件后,不能只保存就完事:
- 检查语法是否正确:运行
sudo apache2ctl configtest(Ubuntu/Debian)或sudo httpd -t(CentOS/RHEL) - 确认无误后重启服务:
sudo systemctl restart apache2或sudo systemctl restart httpd - 用浏览器开发者工具的 Network 面板,或命令行
curl -I http://old-url查看响应头,确认返回HTTP/1.1 301 Moved Permanently及正确的Location字段
替代方案:.htaccess 与 mod_rewrite
如果你无法修改虚拟主机配置(比如用的是共享主机面板),可用 .htaccess,但需满足两个前提:
- 虚拟主机配置中对应目录的
AllowOverride必须设为 All - 服务器已启用
mod_rewrite模块(通常默认开启) - 例如强制 HTTPS:
RewriteEngine On<br>RewriteCond %{HTTPS} off<br>RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]










