En cuanto al .htaccess, los probables motivos son
Que tu server y el mio estén configurados en forma distinta, y, por ejemplo el mod_headers que se usa para la directiva headers no este habilitado (lo cual es bastante improbable), en ese caso probá lo siguiente
Código Apache:
Ver original<IfModule mod_headers.c>
<FilesMatch "\.(pdf)$">
Header unset Cache-Control
Header unset Expires
Header unset Last-Modified
FileETag None
Header unset Pragma
</FilesMatch>
</IfModule>
el ifModule funciona como un condicional, y solo ejecuta las directivas si el modulo está cargado, si despues del cambio no se no se produce un error 500, entonces es que no tenes habilitado el módulo, si aún así se produce, hay otras 2 posibilidades bastante comunes
A. que tu .htaccess incluya algo llamado BOM de utf-8, es un caracter invisible que deja el editor de texto, pero que genera un error en .htaccess, hay que tener cuidado porque el block de notas de Windows deja esa marca por defecto si guardas como unicode, asegurate de guardarlo como ANSI
B. que el .htaccess haya sido subido por ftp como binario y no como ascii
Una vez corregido el .htaccess, si ves que no tenes mod_headers, aún te queda la posibilidad de pasar los encabezados para prevenir la cache desde el mismo php, or lo que lscript quedaría
Código PHP:
Ver original<?php
if(isset($_GET['archivo'])){ $archivo = $_GET['archivo'];
}else{
$archivo = "noexiste";
}
if(isset($_SESSION['pdf'])){
if($_SESSION['pdf'] == "logueado"){
$fichero = "/users/webs/emprear.com/subdomains/$archivo.pdf";
header('Content-Type: application/pdf'); if(isset($_GET['descargar'])){ if($_GET['descargar'] == 1){
header("Content-Disposition:attachment ; filename=[$archivo.pdf"); }
}
# headers para prevenir cache
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false);
}else{
echo "Archivo inexistente";
}
}else{
echo "No permitido";
}
}else{
echo "No autorizado";
}
?>
con respecto a la ruta debe ser absoluta, para verificar cual es creas un php y le pones por contenido
<?php
$r = $_SERVER['DOCUMENT_ROOT'];
echo $r;
?>
y te va a resultar en algo como
/users/webs/878743/htdocs/
ó
/www/webs/users/daven/public_html
Como la ultima carpeta es donde se inicia tu web, creas (tomando el segundo ejemplo), dentro de daven una carpeta pdfs, es decir por fuera de public, y usas en el php
/www/webs/users/daven/pdfs/$archivo.pdf
Saludos