Verzeichnisse ausnehmen bei rewrite-Regeln

Apache, Lighttpd, nginx, Cherokee
Post Reply
roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar
Contact:
 

Verzeichnisse ausnehmen bei rewrite-Regeln

Post by roi »

Hallo alle zusammen,

ich bin verzweifeln, denn ich habe alles versucht. Google war mein treuester Freund gestern abend und den kompletten Nachmittag am heutigen Tag. :-(

Problem: Ich moechte, dass

http://www.domain.tld/seite.html

in

http://www.domain.tld/index.php?page=seite

umschreiben lassen um suchmaschinenfreundliche URLs zu erhalten.

Dies klappt auch sehr gut, ich kann nicht klagen.

Nun sollen aber die noch existierenden ca. 10 Unterverzeichnisse ausgenommen werden. Beispielsweise das Unterverzeichnis "gfx" oder "tmp". Im ersteren Verzeichnis liegen beispielsweise Bilder ohne jegliche Index-Files. Beim Zugriff auf dieses Verzeichnis ohne Dateiangabe soll einfach wie bisher eine Fehlermeldung erscheinen (Indexes ist deaktiviert).

Leider klappt eben dies nicht, da auch hier die index.php aus dem Hauptverzeichnis geladen wird. Witzigerweise gibt es da auch unterschiedliches Verhalten. Im Webalizer-Dir, wo eine index.html existiert, wird diese auch teilweise geladen anstatt der index.php im Hauptverzeichnis.

Hier die Regeln, die ich in den VHost in der httpd.conf eingebaut habe:

Dies ist die Regel, die an sich wie gewuenscht laeuft (leider eben auch in beliebigen Unterverzeichnissen):
RewriteRule ^/?(.*).html$ /index.php?page=$1 [L]

Davor habe ich schon diverse Regeln eingebaut (immer nur eine Regel gleichzeitig), hier einige Beispiele:
RewriteRule !^(.*)gfx(.*)$ - [C]
RewriteCond {REQUEST_URI} !^gfx/$ [NC]
RewriteCond {REQUEST_FILENAME} !^gfx/$ [NC]
RewriteCond %1 !(/gfx/|/tmp/)
RewriteCond %1 !.*/gfx/.*
RewriteRule ^/?(.*)gfx.* - [L]

Bin ratlos und hoffe auf etwas Rewrite-DAU-Hilfe von Euch... ;-)

Vielen Dank,
Roi
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: Verzeichnisse ausnehmen bei rewrite-Regeln

Post by Joe User »

Code: Select all

RewriteRule ^/(.*).html$ /index.php?page=$1 [L]
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar
Contact:
 

Re: Verzeichnisse ausnehmen bei rewrite-Regeln

Post by roi »

Joe User wrote:

Code: Select all

RewriteRule ^/(.*).html$ /index.php?page=$1 [L]
Danke erst einmal fuer die Turboantwort! :-)

Ich sehe, dass das ? fehlt, die Regel ansonsten identisch ist mit der, die ich bisher eingesetzt habe.

Hab das eben mal getestet, leider erfolglos. Funktioniert immer noch nicht. Das ist schon als die einzige Regel gedacht, oder?
roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar
Contact:
 

Re: Verzeichnisse ausnehmen bei rewrite-Regeln

Post by roi »

Juchu ich habs (mit freundlicher Hilfe) nun doch hinbekommen! *freu*

Hier die Loesung fuer mein Problem, vielleicht freut sich ja der ein oder andere, der hier in Zukunft mal nach nem aehnlichen Problem sucht.

An sich ist's ja ganz einfach, man muss nur drauf kommen. An sich reicht naemlich eine einzige Regel, die nur matched, wenn es kein Unterverzeichnis gibt. Sprich auf a-z, A-Z, 0-9, - und _. Sobald also ein / dabei ist (und natuerlich alle anderen nicht aufgefuehrten Zeichen), macht die Regel nichts. Fuer mich genau das richtige.

Code: Select all

RewriteRule ^/([a-zA-Z0-9_-]+).html$ /index.php?page=$1 [L]
Post Reply