【问题标题】:PHP define() function as URLPHP define() 函数作为 URL
【发布时间】:2016-01-07 10:53:21
【问题描述】:

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

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

  • ibnm
    • CSS
    • js
    • img
    • ...
    • 网站
      • 关于
      • 媒体
      • ...
      • 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 的 &lt;a&gt; 标记时,它看起来像

localhost/ibnm/site/localhost/ibnm/css

而不是

localhost/ibnm/css

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

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

【问题讨论】:

    标签: php url xampp localhost


    【解决方案1】:

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

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

    【讨论】:

    • 我会记住的。谢谢
    【解决方案2】:

    这是因为浏览器认为 localhost 是一个文件夹,然后在当前路径上执行此操作,解决方法是在 localhost 前添加http://

    define("css", "http://localhost/ibnm/css");
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-02-25
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 2015-09-01
        • 1970-01-01
        相关资源
        最近更新 更多