【问题标题】:Get Absolute URL From File Absolute PATH in PHP从 PHP 中的文件绝对路径获取绝对 URL
【发布时间】:2016-07-23 02:31:16
【问题描述】:

我有一个检查 CSS/JS... 文件是否存在的函数,然后它返回整个 <script><link> 标记等。
在它返回之前,它会通过绝对路径检查该文件 file_exists() 是否存在。
之后,我想获取该文件的绝对 URL,即使请求类似于 domain.com/abc/def 也可以加载。有什么办法让它在任何地方都能工作(请求都发送到 index.php)?

我受到 Wordpress“排队”的启发,但 WP 将 URL 保存在数据库中,这是我不想要的

感谢您的帮助

【问题讨论】:

  • 您知道网站的根路径,因此您只需从一开始就将其切断,您就有了 URL 的绝对路径。
  • 如果文件位于同一个文件系统中,您是否尝试过使用 realpath 函数将绝对路径转换为相对路径?
  • 你可以使用string_replase($basePath,$domen,$filePath) where $basePath 例如 /var/www/project/ 和 $domen 你 bseUrl 例如 example.çom 等等。
  • @SamiKuhmonen: 根路径是 apache 虚拟主机的根,如果我在一个像 /domains/a.a /domains/b.b/ 之类的域上有更多域该怎么办

标签: php url uri html-head


【解决方案1】:

在您的帮助下,我找到了解决方案; 我意识到所有请求都被重定向到 index.php(如果不是文件),所以我可以使用 DOCUMENT_ROOT。我只需要从 Windows 路径修复 \,因为使用 WAMP。我已添加协议,网址已完成

/**
         * Returns absolute URL of given path
         * @param type $path
         * @return type
         */
        function absuri($path){
//for Windows servers (at the moment I use WAMP, i have Debian on my computer)
        $path = str_replace( '\\', '/', $path );
        return ( ( isset($_SERVER['HTTPS']) ) ? 'https://' : 'http://'  ) . str_replace( $_SERVER['DOCUMENT_ROOT'] , $_SERVER['SERVER_NAME'] . '/' , $path);
    }

【讨论】:

    猜你喜欢
    • 2012-08-27
    • 2015-11-15
    • 2021-10-18
    • 2011-02-07
    • 2012-04-24
    • 2012-01-19
    • 2010-09-18
    相关资源
    最近更新 更多