指向本地服务器上的文件与远程文件的问题

时间:2010-11-04 04:51:40

标签: php

我有一个非常愚蠢的问题...基本上我正在使用本地主机上的站点和远程主机...我通过执行以下操作来包含文件:

<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>

这在当地有效。但是在远程,虽然它不活,网站地址是(伪)xxx.xxx.xxx.xxx/~user,所以很明显,js文件夹是xxx.xxx.xxx.xxx/~user/js/这意味着my / js / jquery ... include不起作用。

显然你在想我只是在/ js的开头删除正斜杠而只是做一个相对的src - 这个问题就是我正在使用mod_rewrite和干净的url,所以有时当包含这个文件时上面的js src是从几个目录深处调用的(或计算机认为的那样),即url.com/blah/blah/blah/所以与一个相对的src,它将尝试url.com/blah/blah/blah/ JS。

我正处于php环境中,我只是想知道这一切最简单的方法是什么。即$ _SERVER ['document_root']。 '/ js / jquery ....'是我虚弱的头脑尝试的东西,但正如专家可能知道的那样 - 它会带来一堆无关的unix目录而不只是转到当前的站点根目录。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

当我在使用相同源代码的各种主机上工作时,我通常会为这类事物定义常量。

define('SITE_ROOT', '/');

define('SITE_ROOT', '/~user/');

答案 1 :(得分:0)

或者,您可以使用此功能。我没有对它进行过广泛的测试,但它在我刚刚执行的测试中有效。它返回带有斜杠的根相对URL。

function get_root_relative_dir()
{
    $root_dir = $_SERVER['DOCUMENT_ROOT'];
    $script_dir = dirname($_SERVER['SCRIPT_FILENAME']);

    return substr($script_dir, strlen($root_dir)) . '/';
}