网站从新浪 SAE 迁移至自有域名,旧域名(如 101ban.sinaapp.com)仍可访问,导致内容重复、SEO 权重分散。需在 SAE/BAE 环境配置 301 永久重定向,保留权重并引导用户。
SAE 使用 AppConfig 配置文件 config.yaml,通过 rewrite 指令实现重定向。
handle:
- rewrite: if(in_header["host"] ~ "^101ban\.sinaapp\.com" && path ~ "^(.*)$") goto "https://www.example.com/hongzhiban$1 [L,QSA,R=301]"
in_header["host"]:匹配请求 Host 头。~:正则匹配操作符。path ~ "^(.*)$":捕获完整路径到 $1。goto:目标 URL,支持反向引用 $1。[L,QSA,R=301]:L=最后一条规则,QSA=追加查询字符串,R=301=301 状态码。BAE 的 app.conf 重写规则可能不生效,或需在应用层统一处理。推荐在 PHP 入口(如 WordPress header.php、框架公共引导文件)最顶部添加:
<?php
// 必须在任何输出之前执行
if ($_SERVER['SERVER_NAME'] !== 'www.example.com') {
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.example.com' . $_SERVER['REQUEST_URI']);
exit();
}
?>
之后、任何 HTML/空白输出之前。$_SERVER['REQUEST_URI'] 保留原请求路径和查询参数,实现全站页面级 301 映射。https://,配合 HSTS 强制加密。in_array($_SERVER['SERVER_NAME'], ['allowed.com', 'www.allowed.com']) 白名单判断。若不想改代码,可安装 Redirection、Simple 301 Redirects 等插件,在后台配置旧域名到新域名的 301 规则,支持正则、日志、404 监控。
curl -I https://101ban.sinaapp.com/some/page
# 应返回:
# HTTP/1.1 301 Moved Permanently
# Location: https://www.example.com/hongzhiban/some/page
| 项 | 说明 |
|---|---|
| 旧域名解析 | 确保旧域名 DNS 仍指向 SAE/BAE,否则请求无法到达重定向逻辑。 |
| 证书覆盖 | 新域名需配置有效 SSL 证书,避免浏览器安全警告阻断跳转。 |
| 搜索引擎通知 | 在 Google Search Console / 百度站长平台提交“网站改版/换域名”申请,加速索引切换。 |
| 测试环节 | 先用 302 测试确认规则正确,再改 301;301 被浏览器缓存,测试需清缓存或用无痕模式。 |