php实现301重定向
301重定向的实现方法
在PHP中实现301重定向可以通过几种不同的方式完成。301重定向是永久性重定向,对SEO友好,能够将访问者和搜索引擎引导至新的URL。
使用header()函数
通过PHP的header()函数发送HTTP 301状态码和新的URL是最常见的方法。确保在调用header()之前没有输出任何内容到浏览器。
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.newdomain.com/newpage.php");
exit();
?>
使用.htaccess文件
如果使用的是Apache服务器,可以通过修改.htaccess文件来实现301重定向。这种方法更高效,因为它在服务器层面处理重定向,不需要PHP脚本执行。
RewriteEngine On
RewriteRule ^oldpage\.php$ https://www.newdomain.com/newpage.php [R=301,L]
重定向整个域名
如果需要将整个域名重定向到新的域名,可以在.htaccess文件中使用以下规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule ^(.*)$ https://www.newdomain.com/$1 [R=301,L]
重定向带查询参数的URL
对于带有查询参数的URL,可以使用以下PHP代码实现301重定向:
<?php
$new_url = "https://www.newdomain.com/newpage.php";
if (isset($_GET['id'])) {
$new_url .= "?id=" . urlencode($_GET['id']);
}
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $new_url);
exit();
?>
注意事项
- 确保在调用
header()函数之前没有输出任何内容,包括空格和换行符。 - 使用
exit()或die()函数确保在重定向后脚本立即终止执行。 - 对于大量重定向规则,使用.htaccess文件更为高效。
- 测试重定向是否正常工作,可以使用在线HTTP头检查工具验证返回的状态码是否为301。







