1. 直接在PHP文件头部插入header跳转是最基础的方式,记得在header前不能有任何输出,否则会报错:
```php
header("HTTP/1.1 301 Moved Permanently"(": https:/ewdomain/target-page"exit();
>
```
2. 对于Apache服务器用户,在.htaccess文件里加RewriteRule更高效,特别是整站迁移时能批量处理:
```apache
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain""$ [NC]
RewriteRule ^(.*)$ https:/ewdomain/$1 [R=301,L]
```
3. 当需要根据不同条件重定向时,用if判断加header组合更灵活,比如按设备跳转不同页面:
```php
if ($_SERVER['HTTP_HOST'] == 'old-site') {
header('Location: https:/ew-site', true, 301);
exit;
}
>
```
4. 用http_response_code显式设置状态码最规范,配合location头部确保搜索引擎正确识别:
```php
http_response_code(301);
header('Location: ew-path/article.php?id=123');
die();
```
5. WordPress站点推荐安装Redirection插件,可视化配置301跳转还能监控404错误,避免手动改代码的风险。
6. Nginx服务器在配置文件中用return指令效率最高,比PHP层级跳转节省服务器资源:
```nginx
server {
listen 80;
server_name old-domain;
return 301 https:/ew-domain$request_uri;
}
```
7. 处理带参数的旧链接时,用$_SERVER超全局变量捕获完整路径:
```php
$new_url = "https://example"_SERVER['REQUEST_URI'];
header("Location: $new_url" true, 301);
exit;
```
---
相关技术问答
Q:301重定向后旧页面流量会消失吗?
A:搜索引擎大约需要2-4周将权重转移到新地址,期间建议保持旧链接可访问状态。
Q:批量修改数千个链接有什么工具推荐?
A:可用Bulk Redirect Checker扫描死链,配合Excel生成.htaccess规则批量导入。
Q:重定向导致循环跳转怎么解决?
A:检查.htaccess规则是否冲突,用浏览器开发者工具的Network标签追踪重定向链条。













