El uso de PHP para cargar la página HTML inhibe cualquier intento de usar el archivo CSS actualizado
Pregunta
Tengo permisos de usuario en mi .html
archivos distintos a 0744
. En realidad están configurados para 0700
Entonces, para evitar esto, tengo SUPHP configurado y uso un load.php
archivo para acceder y cargar todos los archivos. El archivo en cuestión es simple.html
Archivo así:
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;
Nota: El archivo CSS que he establecido en permisos normales 0744 para fines de depuración.
Si escribo http://www.example.com/load.php?page=test.html
La página carga encontrar. Sin embargo, sospecho que el archivo CSS se está utilizando desde un caché porque ninguno de los cambios a test.css
se aplican a test.html
. Si elimino la línea
<link rel="stylesheet" type="text/css" href="test.css" />
El cambio se refleja a medida que el fondo se vuelve blanco nuevamente. Sin embargo, si muevo el css
Archivo a, por ejemplo test2.css
, y cambie el estilo (es decir, diferentes colores) y enlace a eso, los cambios son sorprendentemente no aplicado. Si me muevo test.css
a test2.css
sin vincular el nuevo nombre (similar a la eliminación del archivo), el css
¡El efecto todavía se aplica! Del mismo modo si yo chmod
test.css
a 0000 todavía usa la hoja de estilo. También conozco el .css
el archivo no está dañado porque yo abre test.html
localmente en mi máquina.
¿Alguien tiene alguna idea de lo que está pasando porque no tengo el más niebla?
EDITAR Según la respuesta de Murray McDonald a continuación, trazé el problema para tener que ver con un código de estado 304: no modificado. ¿Por qué se devuelve esto cuando el archivo ha cambiado claramente?
Solución 2
Descubrí cuál es mi problema (aunque con un gran apoyo de Murray). Tengo mis carpetas configuradas como así
/
├── test
│ ├── test.html
│ └── test.css
├── load.php
└── test.css
pensé que
header("Location: http://www.example.com/" . $fileName);
Se iniciaría la página desde la carpeta correcta, pero incluso si escribo lo siguiente en el navegador
http://www.example.com/load.php?page=test/test.html
module.php
, al buscar test.css
devoluciones /test.css
y no /test/test.css
que es lo que quiero. Ahora, la pregunta es cómo le digo a PHP que establezca el directorio de trabajo.
Otros consejos
Cada vez que me encuentro con algo misterioso como este, escucho en el protcolio HTTP yendo y viniendo entre el navegador y el servidor usando "fiddler2": funciona en MSIE y Firefox. Puede ver fácilmente los encabezados de Reuest. Los encabezados de respuesta solicitan el cuerpo, el cuerpo de respuesta (si lo hay), etc.