.htaccess rewrite

Alles, was den Apache betrifft, kann hier besprochen werden.

.htaccess rewrite

Postby DonElik » 21. April 2010 13:56

Hallo,

habe bereits die Suche benutzt konnte aber nichts entsprechendes finden, drum will ich hier mein Problem loswerden:

DocumentRoot: c:/wwwroot/

Verzeichnisstruktur:
c:/wwwroot/anwendung1/
- index.php
- test1.php
- .htaccess

c:/wwwroot/anwendung1/ng/public
- index.php
- test2.php

In der htaccess soll gecheckt werden, ob es die angeforderte Datei im selben Verzeichnis gibt, wenn ja, wird diese "angezeigt". Wenn die Datei nicht existiert soll nach /ng/public weitergeleitet werden.

Beispiel:
Aufruf von http://localhost/anwendung1/test2.php

Also muss "test2.php" irgendwie der RewriteRule übergeben werden.

h1
Code: Select all
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ /anwendung1/ng/public/ [NC,L]


Wie habe ich in der .htaccess Zugriff auf den nicht verfügbaren Pfad (bis "http://localhost/anwendung1/" ist ja alles da, aber der Rest "test2.php" nicht)?
Gibt es eine Möglichkeit den aktuellen Pfad rauszufinden damit ich auf "RewriteRule ^.*$ /anwendung1/ng/public/" verzichten kann, und sowas wie "RewriteRule ^.*$ /DER_AKTUELLE_PFAD/ng/public/" nutzen kann?

Danke und VG
DonElik
DonElik
 
Posts: 2
Joined: 21. April 2010 13:30

Re: .htaccess rewrite

Postby Nobbie » 21. April 2010 14:36

Man muss in der RewriteRule ein deutlich intelligenteres Pattern angeben als den stumpfen Allesfresser ".*" (wobei dort das Flag NC ja auch sinnfrei ist). In 2 Tokens zerlegen und via $1 und $2 referenzieren:

Code: Select all
RewriteRule ^(.*)/([^/]*)$ $1/ng/public/$2


Nicht getestet (mußt Du selbst testen).
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: .htaccess rewrite

Postby DonElik » 21. April 2010 14:57

Oha danke für die Antwort! Ich hasse reguläre Ausdrücke und habe keine Ahnung was deiner macht :D. Aber er funktioniert nicht. Aber die Idee ist gut, da werde ich mich wohl mal in RegExp einlesen müssen.
DonElik
 
Posts: 2
Joined: 21. April 2010 13:30

Re: .htaccess rewrite

Postby Nobbie » 21. April 2010 16:56

Jetzt verstehe ich erst genau, was Du willst - Du kannst wirklich sehr schlecht formulieren, das muss man Dir lassen.

Da reicht diese einfache RewriteRule (wenn sie im Verzeichnis anwendung1 selbst liegt):

Code: Select all
RewriteRule ^([^/]*)$ ng/public/$1
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 29 guests