Zur Navigation

datei.php?ordner/bild.jpg umbenennen

1 Selo

Hallo Jörg,

ist es möglich, mit einer .htaccess aus einer solchen Adresse eine einfache Adresse zu machen?

http://domain.de/ordner/datei.php?bilderordner/bild.jpg

in zum Beispiel:
http://domain.de/ordner/bild.php

datei.php ist ein Formular

bilderordner/bild.php können beide vollkommen unterschiedlich sein und werden dem Formular als Werte übergeben.
Ist das überhaupt möglich, hierfür eine Lösung zu finden?

Viele Grüße von Lothar

30.10.2012 21:47

2 Jörg Kruse

Wenn sowohl "bilderordner" als auch "bild" variabel sein sollen, müssen auch beide in der statischen URL vorkommen. Also z.B.:

http://example.com/ordner/bilderordner/bild.php

Die statische URL könnte man dann mit mod_rewrite umschreiben

RewriteEngine on
RewriteRule ^ordner/(.+)/(.+)\.php$ ordner/datei.php?$1/$2.jpg

30.10.2012 22:45

3 Selo

Hallo Jörg,

danke für die schnelle Antwort.

RewriteEngine on
RewriteRule ^ordner/(.+)/(.+)\.php$ ordner/datei.php?$1/$2.jpg


Du schreibst: ordner/datei.php?$1/$2.jpg

Was ich nicht verstehe, wie bekomme ich hier die eigentlichen Namen hinein, die sind ja bei jedem Bild, was ich aufrufe, anders.

http://example.com/ordner/viele Namen möglich/viele Namen möglich.php

30.10.2012 23:35

4 Jörg Kruse

$1 nimmt den ersten geklammerten regulären Ausdruck wieder auf, $2 den zweiten.

Der reguläre Ausdruck ".+" bedeutet: ein oder mehrere beliebige Zeichen.

31.10.2012 10:07 | geändert: 31.10.2012 10:08

5 Selo

Hallo Jörg, danke.

es passiert leider nichts.
Nun habe ich mal das in das Verzeichnis ordner gelegt, auch hier ist keine Reaktion.

RewriteRule ^(.+)/(.+)\.php$ http://www.example.de/? [R=301,L]


Aus dem Link mit Fragezeichen und der Endung .jpg soll ja ein Link mit der Endung .php werden und ohne das Fragezeichen vorkommen.
Müsste nicht .jpg und .php getauscht werden? Etwa so?
RewriteRule ^ordner/\?(.+)/(.+)\.jpg$ ordner/$1/$2.php [R=301,L]

Da ist aber auch keine Reaktion.

Um eine solche Seite handelt es sich, wenn man auf Grußkarte senden klickt:
http://www.l-seifert.de/blumenbilder/Blumenstrauss.html

Es gibt sehr viele solcher Seiten, jeweils in anderen Ordnern und anderen Namen.

31.10.2012 13:05

6 Jörg Kruse

es passiert leider nichts.

Welche URL hast du denn aufgerufen?

mod_rewrite steht dir zur Verfügung? siehe auch:

https://jkip.de/howtos/mod_rewrite

Steht sonst noch was in der htaccess Datei, was dazwischenfunken könnte?

Aus dem Link mit Fragezeichen und der Endung .jpg soll ja ein Link mit der Endung .php werden und ohne das Fragezeichen vorkommen.
Müsste nicht .jpg und .php getauscht werden? Etwa so?
RewriteRule ^ordner/\?(.+)/(.+)\.jpg$ ordner/$1/$2.php [R=301,L]

Da ist aber auch keine Reaktion.

Das kann so auch nicht funktionieren.

Bedenke bitte dabei, dass mod_rewrite die virtuelle statische URL serverintern zurückwandelt in die reale dynamische URL.

Um eine solche Seite handelt es sich, wenn man auf Grußkarte senden klickt:
http://www.l-seifert.de/blumenbilder/Blumenstrauss.html

Also möchtest du, dass beim Aufruf der URL
http://www.l-seifert.de/grusskarten/blumenbilder/Blumenstrauss.php der Inhalt von http://www.l-seifert.de/grusskarten/grusskarten-1.php?blumenbilder/Blumenstrauss.jpg angezeigt wird? das sollte so funktionieren, wie oben beschrieben

31.10.2012 15:49 | geändert: 31.10.2012 15:50

7 Selo

Das steht bereits in der .htaccess

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,QSA,L]
RewriteRule ^index\.(html?|php)$ http://%{HTTP_HOST}/ [R=301,QSA,L]

Damit werden alle meine .html Seiten aus den Bildern im Ordner erzeugt, die es wirklich gar nicht gibt.
Ich lade praktisch nur ein Bild hoch. Wenn ich darauf klicke, erzeugt sich die .html-Seite.

Dieser Link ruft die Seite auf:
$var = explode(".", $Datei);
print "<A HREF='".$var[0].".html'>$ALT1</A>";


Vielleicht hast du recht, dass das die von Dir gepostete Zeile beeinflusst. Kann man da was machen?

31.10.2012 17:26

8 Jörg Kruse

Das steht bereits in der .htaccess

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,QSA,L]
RewriteRule ^index\.(html?|php)$ http://%{HTTP_HOST}/ [R=301,QSA,L]

Da sehe ich kein Problem. Wie sieht die Datei mit meinem Code aus? Die Datei- und Verzeichnisnamen ("datei.php", "ordner/") musst du da beispielsweise noch anpassen.

Bei manchen Webhostern wird auch noch eine RewriteBase benötigt:

RewriteEngine On
RewriteBase /

31.10.2012 18:06

9 Jörg Kruse

Fällt mir gad noch ein:

gibt es noch eine .htaccess Datei im Unterordner ordner/ - wenn ja, welchen Inhalt hat diese?

31.10.2012 18:13

10 Selo

Im root habe ich folgendes eingetragen:

RewriteRule ^grusskarten/(.+)/(.+)\.php$ grusskarten/grusskarten-1.php?$1/$2.jpg

So wird der Link aufgerufen:
http://www.l-seifert.de/grusskarten/grusskarten-1.php?blumenbilder/Blumenstrauss.jpg

Es passiert nichts.

Zitat von Jörg
Fällt mir gad noch ein:
gibt es noch eine .htaccess Datei im Unterordner ordner/ - wenn ja, welchen Inhalt hat diese?

Nein, da ist keine drin. Ich könnte die benötigte Datei aber dahineinlegen.

Vor einiger Zeit hatte ich aber plötzlich ein sehr merkwürdiges Problem.
Von Zeit zu Zeit füge ich neue Ordner mit weiteren Bildern hinzu und es hatte alles immer gut mit der ,htacess funktioniert. Bis es plötzlich mit neuen Ordnern nicht mehr ging. Die alten fuktionierten, die neuen nicht. Ich weiß bis heute nicht, warum. Damals habe ich in jeden Ordner mit den Bilder eine eigene .htaccess mit dem gleichen Inhalt hochladen müssen.

31.10.2012 18:26