有人可以检查一下这段代码。我知道我可以使用/i
来使这个案例不敏感。但是,即使我不是,我仍然会得到肯定有$ user_agent设置的访问者,但是我无法解决这个问题。
<?php
$user = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/android|linux|windows|Android|Linux|Windows/",$user)) {
header("Refresh:0;url=http://site.com/page.php/");
};
?>
<?php
$referrer = $_SERVER['HTTP_REFERER'];
if(preg_match("/term-one|term-two|term-three/",$referrer)) {
header("Refresh:0;url=http://site.com/page.php/");
exit;
}
?>
答案 0 :(得分:0)
在您第一次exit;
来电后,您错过了header()
声明。
如果它通常看起来仍然有效,但您的代码将继续执行,如果我们的代码稍后会重新设置Refresh
标头,则第一次重定向将永远不会发生。
此外,由于在网页完成加载后进行了刷新,因此您缺少exit
表示您继续加载内容 - 包括(可能是谷歌分析代码),即使它们最终会向右刷新页面,他们仍然会被谷歌分析记录为首先加载此页面。
很明显,为什么您使用Refresh
标题而不是Location
标题进行重定向?
我推荐的代码是:
<?php
$user = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("/android|linux|windows/i", $user)) {
header("Location: http://site.com/page.php");
exit;
}
$referrer = $_SERVER['HTTP_REFERER'];
if (preg_match("/term-one|term-two|term-three/", $referrer)) {
header("Location: http://site.com/page.php");
exit;
}
?>