【问题标题】:Problems with pointing to files on local server versus remote指向本地服务器与远程文件的问题
【发布时间】:2010-11-04 13:16:21
【问题描述】:

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

<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/ 这意味着我的 /js/jquery... 包含不起作用。

显然你认为我只是删除 /js 开头的正斜杠并简单地做一个相对的 src - 问题是我使用带有干净 url 的 mod_rewrite,所以有时当文件包含上面的 js src 是从几个目录深处(或者计算机认为的)调用的,即 url.com/blah/blah/blah/ 所以对于一个相对的 src,它会尝试 url.com/blah/blah/blah/ js。

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

有什么想法吗?

【问题讨论】:

    标签: php


    【解决方案1】:

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

    define('SITE_ROOT', '/');
    

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

    【讨论】:

    • 这个会很完美,但无论如何我的服务器似乎都是一样的。
    • 你定义你的链接是这样的:SITE_ROOT . 'path/to/file.js'?
    【解决方案2】:

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

    function get_root_relative_dir()
    {
        $root_dir = $_SERVER['DOCUMENT_ROOT'];
        $script_dir = dirname($_SERVER['SCRIPT_FILENAME']);
    
        return substr($script_dir, strlen($root_dir)) . '/';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      相关资源
      最近更新 更多