为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Windows / IIS服务器上获取当前页面的完整URL?

/ 猿问

如何在Windows / IIS服务器上获取当前页面的完整URL?

PHP
函数式编程 2019-11-12 10:47:04

我将WordPress安装移至Windows / IIS服务器上的新文件夹。我正在PHP中设置301重定向,但似乎无法正常工作。我的帖子网址具有以下格式:


http:://www.example.com/OLD_FOLDER/index.php/post-title/

我不知道如何获取/post-title/URL 的一部分。


$_SERVER["REQUEST_URI"]-每个人似乎都建议-正在返回一个空字符串。$_SERVER["PHP_SELF"]刚回来index.php。为什么会这样,我该如何解决?


查看完整描述

3 回答

?
慕虎7371278

也许是因为您使用IIS,


$_SERVER['PATH_INFO']

是您想要的,基于您用来解释的URL。


对于Apache,您可以使用$_SERVER['REQUEST_URI']。


查看完整回答
反对 回复 2019-11-12
?
慕莱坞7535251

$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";

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;


查看完整回答
反对 回复 2019-11-12
?
白衣非少年

对于Apache:

'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']


您也可以HTTP_HOST代替SERVER_NAMEHerman所说的使用。有关完整讨论,请参见此相关问题。简而言之,您可能都可以使用其中任何一个。这是“主机”版本:


'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']



对于偏执狂/为什么重要

通常,我设置为ServerName,是VirtualHost因为我希望它成为网站的规范形式。该$_SERVER['HTTP_HOST']基于请求头设置。如果服务器响应该IP地址上的任何/所有域名,则用户可能会欺骗标头,或者更糟的是,有人可能将DNS记录指向您的IP地址,然后您的服务器/网站将通过动态方式为网站提供服务建立在错误网址上的链接。如果您使用后一种方法,则还应该配置您vhost或设置.htaccess规则以强制执行您要提供服务的域,例如:


RewriteEngine On

RewriteCond %{HTTP_HOST} !(^stackoverflow.com*)$

RewriteRule (.*) https://stackoverflow.com/$1 [R=301,L]

#sometimes u may need to omit this slash ^ depending on your server

希望能有所帮助。这个答案的真正意义在于,为那些最终寻求使用apache获取完整URL的人提供第一行代码:)


查看完整回答
反对 回复 2019-11-12

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信