我正在使用Yellowtree的GEOIP-Detect插件,以便根据访问者的位置将访问者重定向到页面。但是我无法使代码完全正常工作。该代码首先获取用户IP,然后将来自IP的信息存储在多维数组中。变量$ statecode拔出列出的状态,然后根据要拉出的状态数组调用switch。
然后,我转向Javascript,以尝试将访问者从当前页面重定向到新页面。脚本会在PHP变量上迁移,以便可以在JS中正确读取,然后函数尝试使用window.location.replace重定向页面,而我所读的内容仅在Chrome中有效,然后作为故障安全window.location其它浏览器。但是,什么也没有发生。我哪里出错了?
<?php
if (function_exists('geoip_detect2_get_info_from_current_ip')){
$userInfo = geoip_detect2_get_info_from_current_ip();
$stateCode = $userInfo->subdivisions->isoCode;
switch ($stateCode) {
case 'AL':
$url = 'subdomain1.domain.tld';
break;
case 'AR':
$url = 'subdomain2.domain.tld';
break;
default:
$url = 'subdomain3.domain.tld';
}
if ($url) { ?>
<script type="text/javascript">
var url = <?php echo $url ?>;
function(){
try { window.location.replace(url); }
catch(e) { window.location = url; }
}
</script>
<?php
}
}
?>
答案 0 :(得分:1)
您可以通过发送Location
标头直接在PHP中进行重定向。请注意,您需要在http://
前面加上$url
,以免将其视为当前URL的相对路径。
if ($url) {
header("Location: http://$url");
exit;
}