Beat: Apache Rewrite Unterverzeichnis verstecken

Beitrag lesen

ich habe jetzt mal ein wenig rumgespielt..

#RewriteRule ^(.+.html)$ test/$1 [L]
RewriteRule ^(test.html)$ test/$1 [L]

Ersteres funktioniert nicht.
Letzteres funktioniert. Das heisst, dass der Part ".+" das Problem verursacht. Aber das ist doch der korrekte Platzhalter?

Problem ist, dass . auf / matcht.
Er wird die Regel auf jedes Unterverzeichnis anwenden.
Das kann man unterbinden

RewriteRule ^([^/]+.html)$ test/$1 [L]
oder
 RewriteRule ^([A-Za-z0-9_-]+.html)$ test/$1 [L]

Damit werden dann natürlich anfragen in Unterverzeichnissen nicht mehr erfasst, sondern nur anfragen in den Ordner, in dem die .htaccess steht, umgeleitet.
Um Sichere Regeln zu haben solltest du vielleicht mehrere Regeln schreiben.

httproot
----a
----b
     ----c
     ----quellen

RewriteRule ^([^/]+.html)$ //b/quellen/$1 [L]
RewriteRule ^a/([^/]+.html)$ //b/quellen/$1 [L]
RewriteRule ^b/([^/]+.html)$ //b/quellen/$1 [L]
RewriteRule ^b/c/([^/]+.html)$ //b/quellen/$1 [L]

Das kann man dann wieder zusammenfassen
RewriteRule ^(|a/|b/|bc/)([^/]+.html)$ //b/quellen/$2 [L]

wichtig ist, dass der Pfad //b/quellen/ nicht durch deine Regel gematcht wird, sonst bekommst du eine Endlosschleife.

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o