PHP 将 () 函数定义为 URL

PHP define() function as URL

我正在为我在学校的总结工作开发一个网站。我正在使用 XAMPP v3.2.1。到本地站点。

我站点的文件夹在 htdocs 文件夹中的配置如下:

我的问题从这里开始:在 index.php 我包括 includes.php,这是一个简单的文件,带有 define() 函数到我的站点的文件夹,所以我可以在 HTML 站点的标签为 URL(如下所示)

    //includes.php
    <?php
       define("css", "localhost/ibnm/css");
    ?>

    //index.php
    <?php
       include_once("includes.php");
    ?>

    <link href="<?= css; ?>/bootstrap.css" rel="stylesheet">

但是当我这样做时,CSS 不起作用。当我在页面上看到带有先前定义的 URL 的 <a> 标签时,它看起来像

localhost/ibnm/site/localhost/ibnm/css

而不是

localhost/ibnm/css

这很令人困惑,因为如果 <a> 标签没有任何值 (href=""),它会输出 localhost/ibnm/site/.

有什么问题吗? XAMPP 还是编码?

这是因为浏览器认为localhost是一个文件夹,然后在当前路径之上进行此操作,解决方法是在localhost

之前添加http://
define("css", "http://localhost/ibnm/css");

您可以在 CSS 路径前添加一个斜杠而不是使用绝对路径 -

<link href="/<?= css; ?>/bootstrap.css" rel="stylesheet">

任何 url 不是以 http 开头,那么浏览器将假定它的相对路径,因此它将附加到您当前的路径,这就是为什么您得到 localhost/ibnm/site/localhost/ibnm/css. 并且在您的代码中进行一个小的更正,在代码中硬编码服务器名称不是一个好主意,最好动态获取服务器名称。这样您在真实服务器中部署站点时无需更改。

//includes.php
    <?php
       define("css",     $host='http://'.$_SERVER['SERVER_NAME'].'/ibnm/css');
    ?>