PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit regex bestimmte ordner ausschließen


rotalever
2008-05-31, 15:38:43
Ich hab unter lighttpd folgende rewrite regel:

url.rewrite-final = (
"^/blub/(.*)$" => "/blub/index.php?content=$1"
)

Ich denke bei ^/blub/(.*)$ haltet es sich um eine regular expression. Wie kann ich jetzt damit bewirken, dass ein bestimmter Ordner nicht eingeschlossen wird, also z.B. /blub/_static/ soll nicht nach index.php übergeben werden sondern ganz normal funktionieren.

Michbert
2008-05-31, 22:57:42
Bin kein Regex Meister aber für URL-Rewriting hab ich mich auch schon mal mit beschäftigt, solange du nur eine Ausnahme hast (theoretisch natürlich auch bei meheren kein problem) kannst du das einfach so in die Regex einbauen:

^/blub/(?!_static)(.*)$

Sinnvoller halte ich aber eigentlich die ausnahmen als extra Rewrite Regeln anzugeben, ich weiss nicht wie das bei der lighthttpd config aussehen müsste,
aber das wäre Apache config:

RewriteRule ^/blub/_static/(.*)$ /blub/_static/$1 [L]
RewriteRule ^/blub/(.*)$ /blub/index.php?content=$1

das [L] sorgt dafür das nach dieser Regel keine weitere (bzw. die darunter) angewandt wird. In dem Fall scheint eine zusätzliche regel zwar eher sinnlos, aber vielleicht will man ja doch noch mit der Verzeichnis Struktur von der URL abweichen und zumindest bei mehreren Ausnahmen ist das übersichtlicher, aber auch egal, wollte nur beide Möglichkeiten aufzeigen.

rotalever
2008-05-31, 23:59:04
Ok danke, das sieht schon mal gut aus. Für das zweite gibt es bei Lighttpd bestimmt auch eine Lösung, es würde sich aber sowieso alles auf einen Ordner beschränken. Ich werde es dann nachher mal ausprobieren.

edit: Ok zumindest Lösung 1 scheint zu funktionieren :smile: