src属性仅适用于相对路径

时间:2015-08-20 19:13:18

标签: html path relative-path src absolute-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>

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

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

我做错了什么?

3 个答案:

答案 0 :(得分:5)

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

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

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

如果您当前的页面是: 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文件,来自客户端视图的“绝对路径”将是:

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

答案 1 :(得分:1)

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

尝试更改:

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

为:

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

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

答案 2 :(得分:0)

试试这个:

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

我没有看到使用绝对路径的重点。你应该让你的代码更具活力。