获取请求 URI PHP



我对在我的wordpress应用程序中获取URI感到震惊,缺乏PHP知识使我的进展缓慢。我有这个网址

http://abc.com/my-blog/abc/cde 

我需要创建一个类似 URL 的网址

http://abc.com/my-blog/added-value/abc/cde

其中http://abc.com/my-blog是我的WordPress博客的URL,我可以使用以下方法轻松获得

home_url()

我可以使用 PHP $_SERVER["REQUEST_URI"] 来获取请求 URI,它将作为

/my-blog/abc/cde

而且我没有直接的方法可以根据我的要求增加价值

有没有办法在PHP或WordPress中轻松实现这一点,我可以在其中获得以下信息

  1. 主页网址
  2. 网址的其余部分

这样最后我可以做以下事情

Home-URL+ custom-value+Rest part of the URL

我的困惑点

  1. 在我的本地设置中,$_SERVER["REQUEST_URI"]给了我/my-blog/abc/cde,其中/my-blog是wordpress的安装目录,我可以轻松地跳过第一级。
  2. 在生产服务器上,它与/my-blog不同,不会成为 URL 的一部分。

非常简短:

<?php
$url = "http://abc.com/my-blog/abc/cde";
$parts = parse_url($url);
$path = explode("/", $parts["path"]);
array_splice($path, 2, 0, array("added-part")); //This line does the magic!
echo $parts["scheme"] . "://" . $parts["host"] . implode("/",$path);

好的,所以如果$addition是你想要的中间位,$uri是你从$_SERVER["REQUEST_URI"]那里获得的,那么这个..

$addition = "MIDDLEBIT/";
$uri = "/my-blog/abc/cde";
$parts = explode("/",$uri);
$homeurl = $parts[1]."/";
for($i=2;$i<count($parts);$i++){
    $resturl .= $parts[$i]."/";
}
echo $homeurl . $addition . $resturl;

应打印:

my-blog/MIDDLEBIT/abc/cde/

您可能想使用爆炸或其他一些刺痛功能。 下面是一些示例:

  $urlBits = explode($_SERVER["REQUEST_URI"]);
  //blog address
  $blogAddress = $urlBits[0];
  //abc
  $secondPartOfUri = $urlBits[1];
  //cde
  $thirdPartOfUri = $urlBits[2];
  //all of uri except your blog address
  $uri = str_replace("/my-blog/", "", $_SERVER["REQUEST_URI"]);

这是在 PHP 中获取当前 url 的可靠方法。

    public static function getCurrentUrl($withQuery = true)
    {
        $protocol = stripos($_SERVER['SERVER_PROTOCOL'], 'https') === false ? 'http' : 'https';
        $uri = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
        return $withQuery ? $uri : str_replace('?' . $_SERVER['QUERY_STRING'], '', $uri);
    }

您可以使用 wordpress 使用 get_home_url() 将主网址存储在变量中

$home_url = get_home_url();
$custom_value = '/SOME_VALUE';
$uri = $_SERVER['REQUEST_URI'];
$new_url = $home_url . $custom_value . $uri;

最新更新