Seite 1 von 1

rewriteRule

Verfasst: 04.09.2005, 16:03
von hollag
Hallo,
habe es endlich nach stunden geschafft eine umleitung zu bekommen.
Was aber nicht ganz funktioniert ist das alles umgeleitet wird, auch dateien die existieren.

Beispiel:
https://www.domain.ee/Computer/test/542.html #542.html ist vorhanden und wird auch auf https://www.domain.ee/Computer/test/ umgeleitet

Es soll nur umgeleitet werden wenn die dateiendung nicht vorhanden ist.

Code: Alles auswählen

rewriteEngine on
rewriteBase /
rewriteRule ^Computer/([A-z]+)/([0-9]+).html /Computer/$1
Danke im Voraus

Verfasst:
von

rewriteRule

Verfasst: 04.09.2005, 16:26
von Caterham
Hi.
Es soll nur umgeleitet werden wenn die dateiendung nicht vorhanden ist.
Wenn die Dateiendung nicht vorhanden ist oder wenn die Datei nicht vorhanden ist? Für letzteren Fall:

Code: Alles auswählen

RewriteEngine on
# ...REQUEST_FILENAME ist keine existierende Datei...
RewriteCond %{REQUEST_FILENAME} !-f
rewriteRule ^Computer/([A-Za-z]+)/([0-9]+)\.html$ /Computer/$1 [L]
-> www.modrewrite.de

Grüße
Robert

Verfasst: 04.09.2005, 16:58
von hollag
Danke für die schnelle Hilfe,
habe bei www.modrewrite.de geschaut aber nichts gefunden.

Habe eins vergessen.
was ist wenn es beliebig viele verzeichnisse sind

https://www.domain.ee/Computer/test/
https://www.domain.ee/Computer/test/oder/noch/eins/

Die verzeichnistiefe ist 14

Danke

rewriteRule

Verfasst: 04.09.2005, 17:01
von Caterham
Die RewriteRule greift dann nicht. Du müsstest dann den Slash mit in die Zeichenklasse aufnehmen.

Code: Alles auswählen

[A-Za-z/]

Verfasst: 04.09.2005, 17:06
von hollag
Danke Caterham
Ohne dich hätte ich es nie geschafft

Verfasst: 04.09.2005, 19:44
von hollag
das mit der dateiendung hat sehr gut funktioniert aber wie mache ich das mit verzeichnissen

habe das eingefügt aber es funktioniert nicht. Das -d ist doch für verzeichnisse

Code: Alles auswählen

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d
rewriteRule ^Computer/([A-Za-z]+)/([A-Za-z]+)\.html$ /Computer/$1 [L]
Danke

rewriteRule

Verfasst: 04.09.2005, 22:33
von Caterham
aber wie mache ich das mit verzeichnissen
Da greift die Regel ja schon mal nicht, d.h. endweder nutzt du zwei Regeln oder du machst '.html' optional. Da scheinbar deine Zeichen am Ende auch andere sind (oben [0-9] hier [A-Za-z]) würde ich ehr zwei Regeln nutzen:

Code: Alles auswählen

RewriteEngine on
# ...REQUEST_FILENAME ist keine existierende Datei...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^Computer/([A-Za-z/]+)/([0-9]+)\.html$ /Computer/$1 [L]

# ...REQUEST_FILENAME ist kein existierendes Verzeichnis...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Computer/([A-Za-z/]+)/([A-Za-z]+)/?$ /Computer/$1 [L]

Verfasst: 24.09.2005, 12:10
von hollag
Hallo,
es träten im nachhinein immer wieder Problem auf.

RewriteCond %{REQUEST_FILENAME} !-f
rewriteRule ^Shopping/([A-Za-z/_0-9,]+)/([0-9]+)\.html$ Shopping/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Shopping/([A-Za-z/_0-9,]+)/([A-Za-z_,0-9]+)/?$ /Shopping/$1 [L]

Das problem ist jetzt das
/Shopping/General_Merchandises/General_Auto/U/9215.html auf
/Shopping/General_Merchandises/General_Auto_U/9215.html gändert wurde oder eben nur
/Shopping/General_Merchandises/General_Auto/U/ auf
/Shopping/General_Merchandises/General_Auto_U/ . Es können verschiedene ordnerebenen(Tiefen) sein. Die andern rewrites funktionieren bei der URL nicht. Habe es versucht umzuschreiben aber immer 500 Server Error

Der Ordner könnte auch so aussehen, also jede mögliche Art von ordner und HTML datei Manipulation
/Shopping/General_Merchandises/General_Auto/U/test/und_noch/ein_test

Danke

Verfasst: 25.09.2005, 13:25
von hollag
Habe das jetzt so gemacht, funktioniert aber nicht ganz richtig mit den andern Regeln

Code: Alles auswählen

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Shopping/([A-Za-z/_0-9,]+)/([A-Za-z_,0-9]+)/?$ /Shopping/$1 [C]
RewriteRule ^Shopping/([A-Za-z/_0-9,]+)/([A-Za-z_,0-9]+) /Shopping/$1/$1_$2 [C]
RewriteRule ^Shopping/([A-Za-z/_0-9,]+)/([0-9]+)\.html$ /Shopping/$1