在 PHP 中,跳转通常是通过 HTTP 响应头(headers)来实现的。使用 header() 函数可以发送一个原始的 HTTP 头部到客户端浏览器。
www 前缀的域名,避免因缺少 www 前缀导致的混合内容问题。www 前缀的网站视为不同的网站,进行重复内容处理,影响 SEO 排名。www 前缀的域名。以下是一个使用 PHP 实现 301 重定向到带有 www 前缀的域名的示例:
<?php
if ($_SERVER['HTTP_HOST'] != 'www.example.com') {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com' . $_SERVER['REQUEST_URI']);
exit();
}
?>问题:为什么有时候跳转不生效?
原因:
header() 函数之前,任何输出(包括空格、换行符)都会导致 header() 函数失效。header() 函数之前已经发送了 HTTP 响应头,header() 函数也会失效。解决方法:
header() 函数之前没有任何输出。ob_start() 函数开启输出缓冲,确保在调用 header() 函数之前没有输出。<?php
ob_start();
if ($_SERVER['HTTP_HOST'] != 'www.example.com') {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com' . $_SERVER['REQUEST_URI']);
exit();
}
ob_end_flush();
?>通过以上方法,可以确保 PHP 跳转到带有 www 前缀的域名生效。