1

我有一个指向许多外部 JavaScript 文件的 PHP 页面(我们将其命名为myJS.php)。

我想将它包含在许多不同的 PHP 页面中,在不同的文件夹中。

问题是当我在不同文件夹的页面中包含myJS.php时, myJS.php的所有 JS 文件都会获得相对地址。

例如:如果 myJS.php 中有类似src="main/calendar.js"内容,当我在不同文件夹的 PHP 页面中包含myJS.php时,它会更改为src="subfolder1/subfolder2/main/calendar.php。 js"

这个问题的任何解决方案?

提前致谢。

4

3 回答 3

2

您可以生成一个绝对网址:

$url = ($_SERVER['HTTPS'] ? "https://" : "http://") . $_SERVER['HTTP_HOST'] . '/mypath/myfile.bla';

您可能想要 var_dump 或 r_print $_SERVER 变量以查看哪些属性可用并且对构建绝对 url 有用。但是正如@Quentin 提到的那样 - 不要太难,您可能会通过使用斜杠开始您的路径,它引用您网站的根目录,/mypathfromroot/myfile.bla而不是myrelativepath/myfile.bla.

于 2013-06-16T10:19:51.197 回答
1
  • 绝对 URI
  • 绝对路径(即相对于站点根目录的 URI(以 开头/))
  • $base为您计算$_SERVER['REQUEST_URI']或硬编码的所有 URL 添加前缀。
于 2013-06-16T10:18:48.457 回答
1

可能完整的解决方案如下所示:

define('IS_WINDOWS', (stripos(PHP_OS,'WIN') === 0));

$webserver_root = dirname(dirname(__FILE__));
if (IS_WINDOWS) {
 //convert windows path separators
 $webserver_root = str_replace("\\","/",$webserver_root); 
}
$web_root = substr($webserver_root, strlen($_SERVER['DOCUMENT_ROOT']));
// Ensure web_root starts with a path separator
if (preg_match("/^[^\/]/",$web_root)) {
 $web_root = "/".$web_root;
}       

$host = ($_SERVER['HTTPS'] ? "https://" : "http://") . $_SERVER['HTTP_HOST'];
$path = $host.$web_root.'/bla/bla';

如果您目前正在使用 localhost(在 Windows 机器上),请首先检查 PHP_OS,然后创建绝对路径并将其用于外部 JS。

于 2013-06-22T09:05:57.887 回答