我尝试了很多组合来获取我的网页的正确路径,例如javascript代码
escape(window.location.href)
我试过这个:
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]$_SERVER[QUERY_STRING]";
但它返回的内容如下:
http://www.mydomain.com/node/4158?asdf=1asdf=1
当实际页面为:
http://www.mydomain.com/node/4158?asdf=1
如果我有这个网址:http://www.mydomain.com/node/4158#comments
,例如结果是:
http://www.mydomain.com/node/4158
即。没有“#comments”
答案 0 :(得分:3)
片段标识符#
完全由客户端处理。浏览器不会将其发送到服务器,因此PHP无法访问它。
找出它的唯一方法是在发出HTTP请求的页面中包含JavaScript,包括完整的URI。
答案 1 :(得分:0)
尝试
$url = $_SERVER['REQUEST_URI'];
答案 2 :(得分:0)
$_SERVER['QUERY_STRING']
是$_SERVER['REQUEST_URI']
的子字符串 - 您只需要后者。但是,不要自己构建网址,只需使用$_SERVER['SCRIPT_URI']
。
此外,由于您的应用程序是服务器端,并且片段标识符(来自#
的所有内容)未包含在HTTP请求中,因此无法通过php代码访问它。
答案 3 :(得分:0)
$location = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80") {
$location .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
} else {
$location .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}
echo $location;
答案 4 :(得分:0)
很多人说这个片段在这里是客户端,但根据文档parse_url将返回片段(如果存在)(参见链接中的第一个例子)。