Zur Navigation

Bilder über htaccess dynamisch verkleinern [3]

21 Rudy

Versuch mal am Anfang der .htaccess folgende Zeile einzufügen:

Options -Multiviews

Die Multiviews Option hat teilweise sehr eigenartigewillige Auswirkungen, falls der Hoster sie aktiviert hat.

08.12.2010 19:00

22 Jörg Kruse

Da hatte ich auch schon dran gedacht, diese Möglichkeit aber verworfen, weil sich die Dateinamen zu sehr unterscheiden. Aber beim zweiten Hinsehen sind sie sich doch gar nicht mal so unähnlich, wenn man den Pfad und die Dateierweiterung beiseite lässt - einmal testbild und einmal bildertest. Von daher ist die Idee wohl doch nicht so abwegig, dass Multiviews hier dazwischenfunken könnte.

08.12.2010 19:33 | geändert: 08.12.2010 19:35

23 Steffen (Gast)

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.

09.12.2010 10:12

24 Jörg Kruse

Und ein Abschalten von Multiviews bringt nichts?

Du hast die Datei ja jetzt in pictures.php umbenannt - funktioniert die RewriteRule damit grundsätzlich nicht (Fehler 404) oder ist wieder nur der GET Parameter nicht verfügbar?

09.12.2010 10:43

25 Steffen (Gast)

ich bekomme, einen grafikplatzhalter angezeigt. wenn ich dann auf "Grafik anzeigen" gehe, dann kommt Fehler 404. Es wird versucht, das Bild im Ordner mediacontent zu finden.

09.12.2010 12:25

26 Jörg Kruse

Dann scheint hier weder Multiviews noch Mod_rewrite zu greifen.

Die RewriteRule hat sich noch geändert - der beginnende Slash könnte hier problematisch sein, so dass die Rule nicht mehr matcht. In der htaccess sollten in den Mustern kein beginnender Slash verwendet werden. Auf das "./" im Zielpfad kann man denke ich auch verzichten

Probier's mal so:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^mediacontent/(.+)\.jpg$ pictures.php?file=$1.jpg [L]

Und wenn das nicht hilft, mit RewriteBase:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^mediacontent/(.+)\.jpg$ pictures.php?file=$1.jpg [L]

09.12.2010 12:46 | geändert: 09.12.2010 12:47

27 Steffen (Gast)

Danke, mit RewriteBase hat es geklappt. Damit habt ihr mir echt weiter geholfen. und ich habe mal wieder ne menge über htacess gelernt.

09.12.2010 13:08

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]