【问题标题】:Server Root href and document root服务器根目录 href 和文档根目录
【发布时间】:2013-11-17 16:26:32
【问题描述】:

我是 PHP 新手,因此,我在 OSX 上使用 XAMPP。我试图在生产和开发中提供相同的<a href="....">s。

我继承了一个全是单级目录的站点(我知道,但不值得更改过多的代码)。现在我正在尝试制作一个设计合理的网站。

所以如果我有一个导航栏,使用以下代码:

  <li><a href="../services.php">Services</a></li>
  <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Equipment<b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="../equipment/equip1.php">Refrigerated Machines</a></li>

我使用../ 到达文档根目录,然后设置绝对路径。在生产版本上它工作正常。但是在开发版本中,它会进入 XAMPP 的更高目录。如何设置服务器相对于站点的服务器根目录?

我的文件夹系统如下

htdocs  # where ../ is going in development
  sites
    site1  # ../ should go here in this site's folder, not any other site's folder
    site2  # ../ should go here in this site's folder, not site1
  xampp

您如何考虑多个网站?如果我将文档根目录强制为site1,那么site2 将如何正常运行?

【问题讨论】:

    标签: php xampp document-root


    【解决方案1】:

    使用base html 标签可以省去很多麻烦...

    我通常做的就是在我的引导文件中放这样的东西:

    define('BASE_URL', 'http://localhost/site1'); // for development
    // define('BASE_URL', 'http://somesite.com'); // for production
    

    这在两个单独的文件中。

    然后你的&lt;head&gt;标签里面会有:

    <base href="<?php echo BASE_URL ?>"/>
    

    现在,您页面中的所有相对链接都将相对于您在 &lt;base&gt; 标签上声明的路径。

    编辑:

    哦,抱歉,没有注意这种可能的混淆。 Bootstrap 是 PHP 程序员给初始配置文件起的名字。通常,我把它放在我网站根目录内的conf 目录中:

    - mysite
    --- conf
    ----- bootstrap.php
    --- assets
    ----- js
    ----- css
    --- src
    --- test
    -- index.php
    

    我的bootstrap.php 文件总是定义我的应用程序根目录:

    define('APP_ROOT', dirname(__DIR__)); // since it's inside /conf/ dir.
    

    这可能会解决您在 PHP 中使用相对目录的问题。

    然后,在我的根目录下的index.php 中,第一行有这个:

    require 'conf/bootstrap.php';
    

    我使用单个入口点(index.php 文件),所以我只需要这样做一次。如果您有多个顶级页面,则必须将其包含在每个页面中。

    如果您将生产引导程序保存在您的服务器中,并将开发版本保存在您的本地主机上,您可以忘记它。

    【讨论】:

    • 当您说引导文件时,您的意思是 twitter bootstrap.js,如果是,在哪里?如果不是,请解释。谢谢。
    • 另外,您不必包含引导文件吗?既然要这么做,那是不是非得在每个页面中设置引导文件的绝对路径才能让它们动态root呢?
    【解决方案2】:

    您应该在 apache 中设置虚拟目录,或者您可以将 html 标签“base”添加到模板中的 head 部分以设置所有 url 的基础。见http://www.w3schools.com/tags/tag_base.asp

    其实如果你使用php生成你的模板,你可以在php里面生成绝对url。

    【讨论】:

      【解决方案3】:

      我建议使用 HTML 的 base element:

      此属性指定一个绝对 URI,作为解析相对 URI 的基本 URI。

      您现在可以在您的应用程序中使用相对 URI,并且在移植到其他站点时只需(动态地)更改您的 &lt;base&gt; 上的 href 属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-25
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        • 2015-09-02
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多