包含和路径问题

时间:2010-08-07 08:46:09

标签: php

<?php
// This is index.php
ob_start();
include 'tem/u.html';
ob_end_flush();
?>

<html>
<!-- This is u.html -->
<link rel="stylesheet" href="style.css" media="screen" /> 
<body>
<p> abc </p>
</body>
</html>

现在我的问题是当我运行h.html - &gt;好的风格。
但是当我运行index.php - &gt; Ok没有样式(因为现在index.php包含style.css,而不是tem / style.css) 需要修复

4 个答案:

答案 0 :(得分:2)

这与PHP或include无关。这与您的浏览器以及URL的解释方式有关。

当您的浏览器指向http://xyz.abc/tem/h.html并要求加载“style.css”时,它会尝试加载http://xyz.abc/tem/style.css - 这相对于当前文档位置称为相对网址。< / p>

当您的浏览器位于http://xyz.abc/index.php并被要求以相同方式加载样式表时,它会尝试http://xyz.abc/style.css。也许你看到了问题?

对于解决方案,您可以使用样式表的域相对路径(“/tem/style.css”)。

答案 1 :(得分:2)

如果可能,请参阅style.css的域相对路径,例如

<link rel="stylesheet" href="/style.css" media="screen" />

如果无法做到这一点,您需要以某种方式跟踪页面基础,我无法分辨,因为我对您的应用程序了解不够。但无论如何,比如

<link rel="stylesheet" href="<?php echo $pageBase; ?>/style.css" media="screen" />

其中$ pageBase是一个变量,包含应用程序根目录的URL。

答案 2 :(得分:2)

我假设tem目录应该用于某种模板,因此您不希望它直接暴露给用户;相反,您希望能够包含这些文件,以便可以通过index.php访问它们,也可以选择稍后更改包含的文件。

您可以创建另一个名为style.php的PHP文件(在根目录中),其中包含tem/style.css。您可以对模板使用的任何其他文件执行此操作 - 根目录中的每个PHP文件都对应于模板中的“角色”,而不是特定的模板文件,以便模板可以在以后使用在没有需要重写的情况下进行了更改。

如果您的模板需要大量文件,这可能会有点麻烦,因此最好让单个脚本指示要加载哪个文件(通过$_GET变量)。但在这种情况下,您需要非常小心不允许用户指定任意文件。我建议在你更熟练使用PHP之前避免使用这种方法。

编辑:第二个想法,我建议在模板HTML文件中使用<base>标记,正如我对@ gnud的答案的评论中所建议的那样。

答案 3 :(得分:0)

只需使用css文件的绝对路径

<link rel="stylesheet" href="/tem/style.css" media="screen" />

这就是全部