PHP:如何获取当前URL的目录深度?

时间:2011-11-28 23:48:33

标签: php url organization

我正在为我公司的网站编写404页面,它有一个$depth变量,上面写着“../site/”。这适用于基本目录中的任何坏URL,但子文件夹中的任何内容都使用$depth变量从错误的位置获取css文件。我试过$depth = '/site/'并且它根本没有抓取任何css文件。我的问题是,我怎样才能让PHP动态地计算出$depth,具体来说,要放入../的数量?如果我能得到一个或多个东西,这很容易,但我似乎找不到一个快速,简单的方法来做到这一点。

编辑:结果是,404.php文件只在一个位置,无论坏网址引用哪个目录。所以,我真正的问题可能与php无关。为什么404页面从www.siteurl.com/404到达时会在一个文件夹中获取css文件,但从www.siteurl.com/foo/bar到达时从另一个文件夹中获取同名的css文件?

4 个答案:

答案 0 :(得分:2)

使用CSS文件的绝对URL,以避免混淆这样的路径。

如果由于某种原因这不适合您,请尝试查看$_SERVER数组,特别是$_SERVER['PHP_SELF']$_SERVER['DOCUMENT_ROOT']

答案 1 :(得分:1)

如果你只是想在你的HTML头中插入CSS,你可以使用/< path_to_css> .css

通过在开头使用/,您告诉浏览器转到您网站的根目录以查找请求的网站。

如果您需要通过PHP的路径,可以使用

$_SERVER['DOCUMENT_ROOT']

它将为您提供可以构建的站点根目录的直接路径。

答案 2 :(得分:1)

这是我几年前写的一个函数,我在我的网站上使用它。 它应该有所帮助:

<?
function absolute_include($file)
         {
         /*
         $file is the file url relative to the root of your site.
         Yourdomain.com/folder/file.inc would be passed as
         "folder/file.inc"
         */

         $folder_depth = substr_count($_SERVER["PHP_SELF"] , "/");

         if($folder_depth == false)
            $folder_depth = 1;

         include(str_repeat("../", $folder_depth - 1) . $file);
         }
?>

答案 3 :(得分:0)

您必须将已知的Web路径映射到已知的磁盘路径(如web / diskroot)。根据该信息,您可以获得当前Web路径所指向的位置。