mod_rewrite Bildpfad

stimmt verdammt das hab ich garnicht bedacht. gibt es dann nich ne Lösung mit RewriteCond zb wenn die angeforderte URL der Bildpfad ist soll er das machen wie beschrieben? Gibts dazu überhaupt ne Lösung?
 
Die einzige Möglichkeit sehe ich darin, den Benutzernamen in der Sitzung zu speichern und die Grafik dann mittels eines PHP-Skriptes auszugeben.
 
Das PHP-Skript müsste dann die Binärdaten der Grafik selbst ausgeben. Beispielsweise:
PHP:
readfile($_SERVER['DOCUMENT_ROOT'].'/web/'.$_SESSION['benutzername'].'/'.$_GET['file']);
 
Hi, das muss doch eigentlich auch mit mod_rewrite gehen oder nicht?
Ich hab jetzt mal überlegt, wieso geht das nich so?
PHP:
RewriteCond %{REQUEST_URI} ^kunden/([^/]+/[^/]+/)([^/]+\.[a-z]+)$
RewriteRule ^kunden/$2 $1$2 [L]
 
Meinst du das zusätzliche PHP-Skript? Das könnte wie folgt aussehen:
PHP:
<?php

	session_start();
	if( !isset($_GET['file']) ) {
		header($_SERVER['SERVER_PROTOCOL'].' 412 Precondition Failed');
		exit;
	}
	if( $_GET['file'] != basename($_GET['file']) ) {
		header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
		exit;
	}
	$absPath = $_SERVER['DOCUMENT_ROOT'].'/web/'.$_SESSION['benutzername'].'/'.basename($_GET['file']);
	if( file_exists($absPath) ) {
		header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
		exit;
	}
	$imageTypes = array(null, 'image/gif', 'image/jpg', 'image/png', 'application/x-shockwave-flash');
	if( !($info = getimagesize($absPath)) || !isset($imageTypes[$info[2]]) ) {
		header($_SERVER['SERVER_PROTOCOL'].' 406 Not acceptable');
		exit;
	}
	header('Content-Type: '.$imageTypes[$info[2]]);
	readfile($absPath);
	exit;
 
Zurück