繁体   English   中英

在Windows上使用PHP获取完整URL不起作用

[英]Getting full URL with PHP on Windows doesn't work

我正在尝试为我的网站构建语言切换,但是,由于托管必须是带有PHP的Windows IIS,我无法获取访问者查看的页面的完整URL。

说我在domain.com/page.php?id=23,我使用旧式的东西

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

是一个空字符串。

所以我尝试了在stackoverflow上找到的解决方案来获取完整的URL

function getFullUrl() {     
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
        $pageURL .= "://";          
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER['HTTP_X_REWRITE_URL'];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER['HTTP_X_REWRITE_URL'];//$_SERVER["REQUEST_URI"] blank
    }
    return $pageURL;
}

但仍然没有。 我得到类似的东西:domain.com/page.php? 在某些情况下和doman.com/? 在其他人。

在这种情况下,是否有明确的方法来获取完整的URL?

非常感谢你。

编辑

似乎无法在该服务器上完成这件事。 我解决了使用js + jQuery编写的客户端工作(我使用purl插件)....可怕:)这里是:

    $('.lang').each(function(){
        $(this).click(function(e){
            e.preventDefault();
            var lingua = $(this).find('a').data('lang');
            var url = window.location.href;
            var urlParts = purl(url);

            if (url.indexOf("?") >= 0)
            {               
                var queryString = urlParts.attr('query').split('&');
                var langIndex = queryString.indexOf('lang');

                if(langIndex > -1)
                {
                    queryString.splice(langIndex,1);
                    var newUrl = urlParts.attr('protocol')+urlParts.attr('host')+urlParts.attr('path')
                    window.location = newUrl + '&lang='+lingua;
                }                   
                else window.location = url + '&lang='+lingua;
            }
            else
                window.location = url + '?lang='+lingua;
        });     
    });

它似乎工作,即使我不明白为什么如果“lang”已经在查询字符串中,脚本无法识别它并且每次点击链接时继续添加&lang。 当然,无论如何它都可以工作,但是观看像&lang=en&lang=fr&lang=pl&lang=de这样的URL是很可怕的

该行返回空

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

因为它应该是这样的:

$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

你需要一个按键报价....看到这里的说明书中无。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM