我正在为我公司的网站编写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文件?
答案 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路径所指向的位置。