重定向到子域

时间:2020-01-04 04:13:32

标签: javascript php arrays redirect

我正在使用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
    }
}   
?>

1 个答案:

答案 0 :(得分:1)

您可以通过发送Location标头直接在PHP中进行重定向。请注意,您需要在http://前面加上$url,以免将其视为当前URL的相对路径。

if ($url) { 
    header("Location: http://$url"); 
    exit; 
}