使用PHP加载html页面会禁止任何使用最新css文件的尝试


Using PHP to load html page inhibits any attempt at using up to date css file

我对.html文件拥有除0744之外的用户权限。它们实际上被设置为0700,所以为了解决这个问题,我设置了suPHP,并使用load.php文件来访问和加载所有文件。有问题的文件很简单。类似的html文件:

test.html(0700)

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="test.css" />
    </head>
    <body>
        <p> why is this not working?</p>
    </body>
</html>

测试.css(0744)

body
{
    background-color:#bbcbde;
}    
p
{
    background-color:#bfc4de;
    color:'red' ;
    border:'solid black';
    font-size:35pt;
}

负载.php(0744)

$page = $_GET['page'];
header("Location: http://www.example.com/" . $fileName);
exit;

注意:出于调试目的,我已将css文件设置为正常的0744权限。

如果我键入http://www.example.com/load.php?page=test.html,则页面加载find。但是,我怀疑css文件是从缓存中使用的,因为对test.css的更改都没有应用于test.html。如果我删除线路

<link rel="stylesheet" type="text/css" href="test.css" />

当背景再次变为白色时,这种变化被反映出来。但是,如果我将css文件移动到,例如test2.css,并更改样式(即不同的颜色)并链接到该样式,则这些更改将不会应用。如果我将test.css移动到test2.css而不链接到新名称(类似于删除文件),则css效果仍然适用!类似地,如果I chmod test.css到0000,它仍然使用样式表。此外,我知道.css文件没有损坏,因为我可以在机器上本地打开test.html

有人知道发生了什么吗,因为我一点也不清楚。

编辑根据Murray McDonald下面的回答,我将问题归结为304:未修改状态代码。为什么在文件明显发生更改的情况下返回?

每当我遇到这样神秘的事情时,我都会使用"fiddler2"窃听浏览器和服务器之间来回运行的HTTP协议——它适用于MSIE和Firefox。您可以很容易地看到重用标头、响应标头、请求正文、响应正文(如果有的话)等。

我发现了我的问题所在(尽管得到了Murray的大力支持)。我的文件夹设置为这样

/
├── test
│   ├── test.html
│   └── test.css
├── load.php
└── test.css

我以为

header("Location: http://www.example.com/" . $fileName);

会从正确的文件夹中启动页面,但即使我在浏览器中键入以下内容

http://www.example.com/load.php?page=test/test.html

module.php,当搜索test.css时返回/test.css而不是我想要的/test/test.css。现在,问题是如何告诉php设置工作目录。