为什么JavaScript中的链接路径不需要precedding /但是PHP中的路径包括do?

CS_*_*013 0 javascript php

听起来很挑剔,但这让我挂了大约一个小时左右.

我在JavaScript中设置了这样的路径

const JAVASCRIPT =              'host/source/ArcJB.js';
Run Code Online (Sandbox Code Playgroud)

在我的文档中呈现如下:

<script type="text/javascript" src="host/source/ArcJ.js"></script>
Run Code Online (Sandbox Code Playgroud)

如果我放入一个先前/它打破链接.

在PHP中,对于服务器端路径,我使用:

<?php
    include_once getcwd() . "/host/source/class.ControlEntry.php";
Run Code Online (Sandbox Code Playgroud)

如果我不放入/它就会破坏它.

从概念上讲,我想我怎么知道这一点,所以我不需要经过反复试验来解决问题?

还注意到:

我的.js文件中的路径使用路径前面的路径/或不/路径.

这些用于图像查找或ajax调用.

Lek*_*eyn 6

您应该知道传递给的路径include_once是在服务器本身上解析的,而Javascript中的路径是由浏览器解析的.两者基本上遵循相同的规则:

  • 开始的路径/绝对解决.在服务器上,这是根目录(即最顶层的目录).在浏览器中,这基本上是连接主机和您指定的路径.
  • 不以a开头的路径/是相对解析的,即针对服务器上的当前目录和浏览器中的路径.

实现getcwd()返回类似的目录/var/www.如果你只是host/source/class.ControlEntry.php与它结合,它就会产生/var/wwwhost/source/class.ControlEntry.php.在大多数(如果不是全部)PHP SAPI上,您可以getcwd()在包含文件时省略事情,因为在包含文件时已经搜索了当前目录.在这种情况下,您不需要/.

最后,服务器文件路径不必与URL匹配!http://example.com/script.php可以位于/var/www/script.js.如果您/script.php在HTML文件中引用它,它将被正确解析.另一方面,您不应该尝试include "/script.php",这将script.php在您的文件系统的根目录中搜索一个通常不是您正在寻找的文件.