【问题标题】:Get $_SERVER["REQUEST_URI"] in PHP5 running on Windows在 Windows 上运行的 PHP5 中获取 $_SERVER["REQUEST_URI"]
【发布时间】:2012-12-07 16:35:43
【问题描述】:

这似乎并不简单。我使用这个流行的功能来获取页面完整的 URL:

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

我的 PHP5 在 Windows 服务器上!这就是 $_SERVER["REQUEST_URI"] 为空的原因。我在 Windows 上使用了这个解决方法:

function fixRequestURI() {
    if(!isset($_SERVER['REQUEST_URI'])) {
        $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'];
        if($_SERVER['QUERY_STRING']) {
            $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
        }
    }
}

但是,它有点工作。我的完整网址是:

http://www.domain.com/web/en/contact/

奇怪的是,我得到了上述函数的结果:

http://www.domain.com/directory1/web/en/contact/index.php?go=3

这个,所谓的“directory1”是我的 domain.com 映射到的物理目录。我理解其中的含义,但是...如何在不进行任何修复、调整等的情况下轻松获得完整的 URL,就像在 JavaScript 中使用 document.location.href 一样?

谢谢

【问题讨论】:

    标签: php windows


    【解决方案1】:

    试试这个:

    <?
    function getUrl(){
        $http = 'http' . (@$_SERVER['HTTPS'] ? 's' : '');
        $query = $_SERVER['QUERY_STRING'] ? "?$_SERVER[QUERY_STRING]" : '';
        return "$http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]$query";
    }
    

    它不会捕获锚点(在哈希 # 标记之后)

    【讨论】:

    【解决方案2】:

    回答我的问题:这对我有用:

    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;
    }
    

    如果它在任何特殊情况下会失败,请给我任何想法。

    【讨论】:

    • 看起来我的 www.domain.com,当指向 /directory1/ 时,不知何故没有告诉 $_SERVER["REQUEST_URI"] 或 $_SERVER["PHP_SELF"] 映射.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多