首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

新浪 SAE 与 BAE 环境下配置 301 重定向的实战方法

     編輯:PHP 相關知識

场景背景

网站从新浪 SAE 迁移至自有域名,旧域名(如 101ban.sinaapp.com)仍可访问,导致内容重复、SEO 权重分散。需在 SAE/BAE 环境配置 301 永久重定向,保留权重并引导用户。

SAE 环境:config.yaml 重写规则

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 / 通用 PHP 环境:入口文件强制跳转

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();
}
?>

关键点

  1. 位置:放在 之后、任何 HTML/空白输出之前。
  2. 保留 URI:$_SERVER['REQUEST_URI'] 保留原请求路径和查询参数,实现全站页面级 301 映射。
  3. HTTPS:目标 URL 建议用 https://,配合 HSTS 强制加密。
  4. 多域名:可扩展为 in_array($_SERVER['SERVER_NAME'], ['allowed.com', 'www.allowed.com']) 白名单判断。

WordPress 专用插件替代方案

若不想改代码,可安装 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 被浏览器缓存,测试需清缓存或用无痕模式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved