PHP define()函数作为URL

时间:2015-10-09 13:09:07

标签: php url xampp localhost

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

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

  • ibnm
    • CSS
    • JS​​
    • IMG
    • ...
    • 网站
      • midia
      • ...
      • includes.php
      • index.php (主页)

我的问题从这里开始:在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>标记时,它看起来像

本地主机/ ibnm /站点/的本地主机/ ibnm / CSS

而不是

本地主机/ ibnm / CSS

如果<a>标记没有任何值(href=""),它会输出 localhost / ibnm / site / ,这会导致混淆。

有什么不对? XAMPP还是编码?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

这是因为浏览器认为localhost是一个文件夹,然后在当前路径的顶部执行此操作,修复只是在localhost之前添加grunt

http://

答案 2 :(得分:0)

您可以在CSS路径之前添加一个斜杠 -

,而不是使用绝对路径
<link href="/<?= css; ?>/bootstrap.css" rel="stylesheet">