您好,我有以下我一直在开发的php
<?php
$URI = $_SERVER['REQUEST_URI'];
$activepage = $_SERVER['SERVER_NAME'];
$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];
if (
strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") !== false ||
strpos($_SERVER["HTTP_USER_AGENT"], "Facebot") !== false
) {
// it is probably Facebook's bot
if ($activepage=="www.example.co.uk") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="test.example.co.uk") {
$link = 'http://test.example.co.uk' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="www.example.us") {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
}
}
elseif {
// that is not Facebook
if ($activepage=="test.example.co.uk" & $country_code=="CA") {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="test.example.co.uk" & $country_code=="US") {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="test.example.us" & $country_code=="GB") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="test.example.us" & $country_code=="UK") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}
}
?>
第二个if / elseif工作正常,它本身看起来像这个
<?php
$URI = $_SERVER['REQUEST_URI'];
$activepage = $_SERVER['SERVER_NAME'];
$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];
if ($activepage=="www.example.co.uk" & $country_code=="CA") {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="www.example.co.uk" & $country_code=="US") {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="www.example.us" & $country_code=="GB") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}
elseif ($activepage=="www.example.us" & $country_code=="UK") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}
?>
但是当我把它放进这个
时if (
strpos($_SERVER["HTTP_USER_AGENT"], "facebookexternalhit/") !== false ||
strpos($_SERVER["HTTP_USER_AGENT"], "Facebot") !== false
) {
// it is probably Facebook's bot
}
else {
// that is not Facebook
}
它停止了一起工作。
我想要做的是让facebook bot进入使用该链接的网站但是如果它是普通用户就失败了,那么如果来自美国的用户点击英国网站他们被重定向,如果是来自英国的用户获得了他们被重定向的美国网站 - 使用cloudflares HTTP标头。
有关我可能在哪里出错的任何想法吗?
谢谢
答案 0 :(得分:0)
您的第一个商家信息中没有elseif
条件,这应该只是else
}
elseif {
// that is not Facebook
应该是
}
else {
// that is not Facebook
答案 1 :(得分:0)
你的其他如果陈述不正确。请参阅http://php.net/manual/en/control-structures.elseif.php
// it is probably Facebook's bot
if ( $activepage=="www.example.co.uk" ) {
$link = 'http://www.example.co.uk' . $URI;
header( "location:$link" );
exit;
} elseif( $activepage=="test.example.co.uk" ) {
$link = 'http://test.example.co.uk' . $URI;
header("location:$link");
exit;
} elseif( $activepage=="www.example.us" ) {
$link = 'http://www.example.us' . $URI;
header("location:$link");
exit;
} else {
//you need to do something here
}
如果您计划保留elseif( $activepage=="www.example.us" ) {
,那么您需要添加一个else语句,就像我已添加到答案中一样。
否则,您可以将elseif( $activepage=="www.example.us" ) {
更改为else( $activepage=="www.example.us" ) {
if语句的第二部分也有语法错误。
这就是你拥有的
elseif ( $activepage=="test.example.us" & $country_code=="UK" ) {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
}
您需要将其更改为else ( $activepage=="test.example.us" & $country_code=="UK" )
或将其更改为
elseif ($activepage=="test.example.us" & $country_code=="UK") {
$link = 'http://www.example.co.uk' . $URI;
header("location:$link");
exit;
} else {
//do something here
}
主if语句也有语法错误。
这就是你拥有的
}elseif {
// that is not Facebook
这就是它需要的
}else {
// that is not Facebook