src 属性仅适用于相对路径

The src attribute only works with a relative path

我在我的网页中添加了一个 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>

这会导致此服务器以 [​​=12=] 状态响应。

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

我做错了什么?

试试这个:

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

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

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

尝试更改:

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

至:

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

这将使代码在根目录中查找 /js 文件夹作为绝对路径。我假设您已将代码存储在根目录中,但如果不查看您的目录树就很难判断。

关键点是 <script> 标记被解释为 客户端 而 php 包含被解释为 服务器端 .

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

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

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

您服务器的 "root" 目录似乎是 /home/name/domains/domain.com/public_html

因此,对于您的 JS 文件,客户端视图中的 "absolute path" 将是:

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