【问题标题】:The src attribute only works with a relative pathsrc 属性仅适用于相对路径
【发布时间】:2015-11-14 13:58:27
【问题描述】:

我在我的网页中添加了一个 javascript 文件,如下所示:

<script type="text/javascript" src="../../js/filename.js"></script>

这很好用。但是,我随后尝试将相对路径更改为绝对路径,如下所示:

<script type="text/javascript" 
        src="/home/name/domains/domain.com/public_html/js/filename.js"></script>

这会导致此服务器以404 (Not Found) 状态响应。

我相当确定这是该文件的正确绝对路径,因为使用require_once() 导入具有非常相似的绝对路径的某个php 文件没有问题。事实上,PHP 函数realpath("../../js/filename.js") 产生"/home/name/domains/domain.com/public_html/js/filename.js"

我做错了什么?

【问题讨论】:

    标签: html path relative-path src absolute-path


    【解决方案1】:

    关键是&lt;script&gt;标签被解释为客户端,而php include被解释为服务器端

    服务器端,路径将相对于您的文件系统(绝对或相对于当前目录)

    客户端(=浏览器端),路径将相对于当前页面的url。

    如果您的当前页面是: http://domain:port/page.php, 您的浏览器正在尝试加载http://domain:port/home/name/domains/domain.com/public_html/js/filename.js 服务器找不到。

    您服务器的“根”目录似乎是/home/name/domains/domain.com/public_html

    因此,对于您的 JS 文件,客户端视图中的“绝对路径”将是:

    &lt;script type="text/javascript" src="/js/filename.js"&gt;&lt;/script&gt;

    【讨论】:

      【解决方案2】:

      您不需要服务器存储信息的完整路径。您的 Apache、Nginx 等配置将为您创建根目录,然后您需要以此为基础。

      尝试改变:

      &lt;script type="text/javascript" src="../../js/filename.js"&gt;&lt;/script&gt;

      到:

      &lt;script type="text/javascript" src="/js/filename.js"&gt;&lt;/script&gt;

      这将使代码在根目录中寻找/js 文件夹作为绝对路径。我假设您将代码存储在根目录中,但是如果没有看到您的目录树就很难分辨。

      【讨论】:

        【解决方案3】:

        试试这个:

        <script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>/js/filename.js"></script>
        

        我看不出使用绝对路径的意义。你应该让你的代码更加动态。

        【讨论】:

          猜你喜欢
          • 2015-10-02
          • 2012-08-29
          • 2011-07-12
          • 1970-01-01
          • 2016-09-14
          • 2014-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多