我对.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设置工作目录。