Seite 1 von 1

RewriteRule

Verfasst: 28.07.2006, 11:26
von guppy
ich gebs auf,,
gibt es eine Möglichkeit bestimmte Dateitypen auf eine einzelne Datei umzuleiten?

in meinem speziellem Fall

alle dateien die mit .png enden auf eine Datei meinetwegen test.jpg


in etwa so:
RewriteRule ^(.*)\.png$ https://www.domain.de/test/test.jpg

:oops:

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Re: RewriteRule

Verfasst: 28.07.2006, 17:52
von haha
guppy hat geschrieben:gibt es eine Möglichkeit bestimmte Dateitypen auf eine einzelne Datei umzuleiten?
Nein, Dateitypen nicht (wenn man's genau nimmt)…
alle dateien die mit .png enden auf eine Datei meinetwegen test.jpg
…aber Dateinamen, die auf einen Dateityp hindeuten, ja.
RewriteRule ^(.*)\.png$ https://www.domain.de/test/test.jpg
Richtig. Die runden Klammern sind zwar überflüssig, da Du deren Inhalt in der neuen URL nicht wiederverwertest, aber ansonsten ist das richtig.

Verfasst: 28.07.2006, 18:23
von guppy
@haha
thx erst mal - aber das Problem ist, dass es nicht funktioniert.
Weder mit noch ohne Klammer.
Da ist irgend ein Denkfehler drin.
Ist heute eh nicht mein tag wie es scheint :evil:

Verfasst:
von

Verfasst: 28.07.2006, 21:26
von haha
An die Zeilen

RewriteEngine on
RewriteBase [Basis-URL der .htaccess]

hast Du gedacht? Falls ja, das Muster Schritt für Schritt zusammenstreichen, spätestens bei .* muss das Bild unter jeder URL ausgespuckt werden.

Eventuell auch:
- Ans Ende der RewriteRule-Zeile ' [R]' anhängen (ohne Anführungszeichen), damit die Weiterleitung öffentlich wird und Du sehen kannst, welche URL sie ergibt.
- Ausnahmslos alle anderen Einträge in der .htaccess Schritt für Schritt entfernen.

Verfasst: 29.07.2006, 09:19
von guppy
hm, mein Denkansatz war falsch.
Es funktiniert intern.

Aber ich habe eine Domain übernommen, auf der 100derte eine Avatar (in 100derten verschiedenen Verzeichnissen) hinterlegt hatten, den Sie in zig Foren verwenden.
Diese Dateien sind in diesem .png Format hinterlegt, dieses Format verwende ich selber nicht .
Nun wollte ich, dass immer wenn von außen eine dieser png Dateien aufgerufen wird, eine jpg erscheint auf der der Hinweis vermerkt ist, dass die Datei nicht mehr auf der ursprünglichen domain liegt.
Aber ich habe die dumme Ahnung, dass ich da jedes einzelne Bildchen ersetzen muß :-? .

Verfasst: 29.07.2006, 09:27
von mcchaos
Was meinst du genau mit "es funktioniert intern"?

Wenn Du willst, dass sich auch die Browser-URL ändert, dann schick nen 301er:
RewriteRule ^(.*)\.png$ https://www.domain.de/test/test.jpg [R=301,L]

Verfasst: 29.07.2006, 09:53
von haha
guppy hat geschrieben:Es funktiniert intern.
Was heißt denn intern?
Diese Dateien sind in diesem .png Format hinterlegt, dieses Format verwende ich selber nicht .
Da entgeht Dir aber was :)
Nun wollte ich, dass immer wenn von außen eine dieser png Dateien aufgerufen wird, eine jpg erscheint auf der der Hinweis vermerkt ist, dass die Datei nicht mehr auf der ursprünglichen domain liegt.
Aber ich habe die dumme Ahnung, dass ich da jedes einzelne Bildchen ersetzen muß :-? .
Nein, Deiner bisherigen Beschreibung nach müsste es eigentlich so funktionieren, wie Du Dir vorstellst.

Ich würde allerdings an Deiner Stelle einen ordentlichen Fehlercode liefern. Wenn Du mit "ErrorDocument 410 /410.php" (als Beispiel) ein Skript als Fehlerseite definierst, kannst Du in diesem Skript über die Umgebungsvariable REDIRECT_URL abfragen, welche URL gewünscht wurde und, falls es eine der alten Grafiken war, Deine Platzhaltergrafik ausgeben. In PHP könnte das in etwa so aussehen (nicht ausprobiert):

Code: Alles auswählen

if (substr($_SERVER["REDIRECT_URL"], -4)  == ".png") {
    header("Content-Type: image/jpeg");
    readfile("test/test.jpg");
    exit;
}
[Hier die Standardfehlermeldung als HTML-Dokument.]
Statt substr() müsste ein komplexerer Vergleich mit preg_match() her, falls noch andere .png-URLs auftreten könnten und/oder die URLs nicht schon vorher aussortiert werden (mit Redirect gone, siehe unten).

Benutzt Du den Fehlercode 410 ("entfernt") statt des normalen 404 ("nicht gefunden"), müsstest Du die betroffenen URLs noch mittels 'RedirectMatch gone' bzw. 'Redirect gone' explizit mit 410 versorgen.

Lange Beschreibung, aber in der Umsetzung in fünf Minuten zu erledigen, wie ja auch schon an dem nur vierzeiligen PHP-Skript zu erahnen ist. Vor allem ist es aber die sauberere Lösung gegenüber einer Weiterleitung.