我想使用php将非www网址重定向到www。
我知道在htaccess中使用mod_rewrite很容易实现。但我想使用php header()进行此重定向。
我编写了一个脚本,用于检查主机是否包含www。
$url=$_SERVER["HTTP_REFERER"];
if(preg_match_all("/http:\/\/www\./i",$url,$m))
{echo "host has www";}
否则 {echo"主持人不是以www";}开始的。
如果orignal主机是非www,我如何继续使用并添加301状态标题以将其重定向到www.domain.com?
这种重定向是否可以在PHP中使用?
答案 0 :(得分:6)
你可以这样做:
if (strpos($_SERVER['HTTP_HOST'], 'www') === false) {
$protocol = isset($_SERVER['HTTPS']) && filter_var($_SERVER['HTTPS'], FILTER_VALIDATE_BOOLEAN)
? 'https'
: 'http';
header(
"Location: $protocol://www." . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
true,
301
);
}
答案 1 :(得分:2)
header('Location: http://www.YOURDOMAIN.com/foo/bar?foo=bar', true, 301);
查看here。
答案 2 :(得分:2)
您检查REFERER而不是主机名。
$protocol = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {
header('Location: ' . $protocol.'www.' . $_SERVER['HTTP_HOST'] . '/' . $_SERVER['REQUEST_URI'], true, 301);
exit;
}
像这样。