Search code examples
phphtmlcsssuphp

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


I have user permissions on my .html files other than 0744. They are actually set to 0700 so to get around this, I have suPHP set up, and I use a load.php file to access and load all the files. The file in question is a simple .html file like so:

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>

test.css (0744):

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

load.php (0744):

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

Note: the css file I have set to normal 0744 permissions for debugging purposes.

If I type http://www.example.com/load.php?page=test.html the page loads find. However, I suspect that the css file is being used from a cache because none of the changes to test.css are applied to test.html. If I remove the line

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

The change is reflected as the background becomes white again. However, if I move the css file to, for example test2.css, and change the style (ie. different colors) and link to that instead, the changes are suprisingly not applied. If I move test.css to test2.css without linking to the new name (similar to deleting the file), the css effect is still applied! Similarly if I chmod test.css to 0000 it still uses the style sheet. Also I know the .css file is not corrupted because I con open up test.html locally on my machine.

Does anyone have any idea what's going on because I don't have the foggiest.

EDIT as per Murray McDonald's answer below, I traced down the problem to having to do with a 304: Not Modified status code. Why Is this being returned when the file has clearly changed?


Solution

  • I figured out what my problem (albeit with great support from Murray). I have my folders set up like so

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

    I thought that

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

    would launch the page from within the correct folder, but even if I type the following into the browser

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

    module.php, when searching for test.css returns /test.css and not /test/test.css which is what I want. Now, the question is how I tell php to set the working directory.