我在我的网页上添加了一个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"
。
我做错了什么?
答案 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>
我没有看到使用绝对路径的重点。你应该让你的代码更具活力。