<?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)
需要修复
答案 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" />
这就是全部