Ich habe die Dateien jetzt in ein "sauberes" verzeichnis gelegt. Es gibt keine übergeordnete .htaccess.
das ist meine derzeitige .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/mediacontent/(.*).jpg$ ./pictures.php?file=$1.jpg [L]
den aufruf mache ich mit folgender datei: test.php
<html>
<head>
</head>
<body>
<img src="/mediacontent/testbild.jpg" alt="" width="100" height="100" />
</body>
</html>
der code in der pictures.php lautet:
<?php
$img_dir = "Verzeichnis außerhalb von root";
if (!isset($_GET['file'])) die("keine Datei angegeben");
//Zu öffnende Datei auslesen
$file_to_open = $_GET['file'];
//Dateityp feststellen
switch(substr(strtolower($file_to_open),-3,3))
{
case "jpg": $type="image/jpeg";
break;
case "gif": $type="image/gif";
break;
case "png": $type="image/png";
break;
default: die("Dateityp nicht erlaubt");
}
$file=$img_dir . $file_to_open;
if (!file_exists($file) || !is_file($file))
{
die("Datei existiert nicht");
}
//Datei an den Browser schicken
header("Content-Type: " . $type);
readfile($file);
?>
Es gibt keinen Ordner "mediacontent". Die Dateien test.php und pictures.php liegen im selben Vereichnis.
Ein Aufruf von "pictures.php?file=testbild.jpg" funktioniert.