Hallo Zusammen, ich Stehe vor folgendem Problem: In einem Verzeichnis, nennen wir es /bar, existiert eine Datei Namens foo. Ich möchte auf diese via HTTP mit /foo zugreifen. mod_rewrite soll also zuerst nach der Datei im Verzeichnis / suchen, falls sie dort nicht existiert, soll die entsprechende Datei unter /bar gesucht werden. MfG Lukas
Ich check zwar nicht warum alle Welt immer auf dieses Foo/Bar Quatsch steht, daher kann ich nur mit einem "normalem" Beispiel dienen ;)
1 | #Weiterleitung für default Files |
2 | RewriteCond %{REQUEST_FILENAME} !-f |
3 | RewriteRule ^css/(.+)$ default/css/$1 [L] |
Danke, das ganze hat bei mir noch einen kleinen Schönheitsfehler: Wenn die angefragte Datei in keinem der Verzeichnisse existiert kommt ein unbeholfener 500 Internal server error statt ein 404 :( 'Ne Idee wie man das beheben kann (hab von mod_rewrite und regex nahezu keine Ahnung und weiß nicht, mit was ich google füttern soll)
Das sollte eigentlich nicht sein, wenn die Datei nicht existiert solle ein 404 Fehler geliefert werden, zeig doch mal deine htaccess Datei. Luk4s K. schrieb: > hab von mod_rewrite und regex nahezu > keine Ahnung und weiß nicht, mit was ich Google füttern soll Na z.B. mit "htaccess modrewrite" oder "Regularexpressions" da gibt es hunderte von Tutorials, Websites und Beispielen...
Hier die .htaccess:
1 | RewriteEngine on |
2 | RewriteCond %{REQUEST_FILENAME} !-f |
3 | RewriteRule ^(.+)$ ablage/$1 |
Da fehlt das [L] für leave = Bei matching dieser Regel beenden, so erzeugst du eine Endlosrekursion wenn die Datei nicht existiert! (siehe obiges Beispiel)
Nun sieht die .htaccess so aus:
1 | RewriteEngine on |
2 | RewriteCond %{REQUEST_FILENAME} !-f |
3 | RewriteRule ^(.+)$ ablage/$1 [L] |
Und es gibt bei nicht existierender Datei immer noch einen 500 error.
Funktioniert es den schon für existierende Dateien. Jeweils in dem einen oder dem anderen Ordner? Fehler 500 deutet meist darauf hin, das du noch Optionen setzen musst wie z.B. RewriteBase o.ä.
Läubi .. schrieb: > Funktioniert es den schon für existierende Dateien. Jeweils in dem einen > oder dem anderen Ordner? Ja, die Umleitung funktioniert, nur wenn die Datei in keinem der beiden Ordner ist gibt es den 500 Fehler. Beispiel: Datei gluc.png liegt im Order / http://0x83.eu/gluc.png Datei tdr.png liegt im Order /ablage Geht so: http://0x83.eu/ablage/tdr.png So auch: http://0x83.eu/tdr.png Bei einer nicht existenten Datei: z.B. http://0x83.eu/gibtnsnich -> 500
Möglichwerweise macht es Probleme das du da im root Verzeichnis operierst. Hast du es mal in einem Unterordner probiert? Ich könnte mir nämlich noch vorstellen, das der Server ggf. eine 404 Fehlerseite im rootfolder sucht, du durch deine mod_regel allerdings alle Dateinamen/Dateien erfasst. Du könntest auch mal folgende Abwandlung versuchen
1 | RewriteEngine on |
2 | RewriteCond %{REQUEST_FILENAME} !-f |
3 | RewriteRule ^(.+)\.png$ ablage/$1.png [L] |
Das sollte dann nurnoch auch PNG Dateien Einfluss haben.
Das wäre eigentlich nicht Sinn der Übung, nur einen bestimmten Dateityp umzuleiten.
Naja solange du keinen Zugriff auf das mod_rewrite debug/error Modul hat muß man aber erstmal schauen wo das Problem liegt/liegen könnte... Optimieren kann man dann immer noch. Man könnte nämlich wenn es das Problem ist, folgendes versuchen
1 | RewriteEngine on |
2 | RewriteCond %{REQUEST_FILENAME} !-f |
3 | RewriteRule ^ablage/(.+)$ ablage/gibtesgarantiertnicht.htmlpgztz [L] |
4 | RewriteCond %{REQUEST_FILENAME} !-f |
5 | RewriteRule ^(.+)$ ablage/$1 [L] |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.