【问题标题】:How to get everything after the domain name into a string如何将域名后的所有内容变成字符串
【发布时间】:2019-08-29 12:51:22
【问题描述】:

我的目标是将域名之后的所有内容都变成一个字符串。如在 mysite.com/page/page2 中将产生一个字符串“page/page2”。我可以这样做,但是当例如站点位于子文件夹而不是根目录时,它开始给我带来问题,那么站点所在的文件夹也将包含在字符串中,如果我不使用 mod_rewrite获得漂亮的链接,它还会将 index.php 添加到字符串中。

所以,我需要一两个技巧来让脚本了解该站点是否位于诸如 mysite.com/sitefolder/page/page2 之类的子文件夹中,并且它仍然会生成一个字符串

page/page2

如果站点不使用 mod_rewrite 并且 url 是 mysite.com/sitefolder/index.php/page/page2,它仍然会产生一个字符串

page/page2

请记住,我在配置文件中定义了 URL 和 USE_MOD_REWRITE,所以不需要魔法。我只是不知道如何获取该字符串。我知道我可以做 $_SERVER['REQUEST_URI'] 来获取字符串,但是 index.php 仍然在其中。很抱歉,如果我解释得不够清楚,但感谢所有帮助。

【问题讨论】:

    标签: php mod-rewrite


    【解决方案1】:
    • 通过解析请求uri获取路径
    • 从字符串末尾删除最终的脚本名称(例如 index.php)
    • 修剪任何尾部斜杠

      $request = parse_url($_SERVER['REQUEST_URI']); $path = $request["path"]; $result = rtrim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');

    编辑

    $request = parse_url($_SERVER['REQUEST_URI']);
    $path = $request["path"];
    
    $result = trim(str_replace(basename($_SERVER['SCRIPT_NAME']), '', $path), '/');
    
    $result = explode('/', $result);
    $max_level = 2;
    while ($max_level < count($result)) {
        unset($result[0]);
    }
    $result = '/'.implode('/', $result);
    

    【讨论】:

    • 这非常有效。关于如何检测整个站点是否在子文件夹中的任何想法?目前,如果在子文件夹中,它也会输出文件夹名称。
    • 我猜您需要在网站中定义最大级别的子文件夹...请参阅编辑;)
    • “致命错误:超过 30 秒的最大执行时间” - 我认为循环并不是一个好主意:D
    • 我认为你离开了 rtrim() 对于第二个解决方案它应该是 trim()
    【解决方案2】:

    您可以使用$_SERVER['REQUEST_URI'],然后使用PHP 的substr() 函数修改字符串。因此,将 URI 放入一个变量中,然后运行该函数以删除开头的前 X 个字符(域名长度)和末尾的 X 个字符(index.php = 9)。

    例如:

    $new_url = substr($uri_variable, 10, -9);

    其中$uri_variable$_SERVER[REQUEST_URI']`,10是域名后面的字符,-9是index.php中的字符。

    https://www.php.net/manual/en/reserved.variables.server.php http://php.net/manual/en/function.substr.php

    【讨论】:

    • 这样更容易。
    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    相关资源
    最近更新 更多