Pénteken kellett volna gyorsan egy "átirányítós regexp", ami a weboldalra érkező kérések mindegyikét egy karbantartási (maintenance) oldalra irányítja, ami a webes könyvtár gyökerében volt.
Eleinte ^(.*)$ volt megadva, ami majdnem jó is volt – csakhogy a csicsás maintenance oldalon voltak képek, css-ek, betűtípusok is. Ezeket (mivel alkönyvtárban voltak) nem jól mutatta, mert illeszkedett rájuk, és a gyökérkönyvtárba irányította a kérést.
Először egy "negatív lookahead": ^/(?!css|img|js)([a-z0-9]+)$
kifejezéssel próbálkoztam, de nem vált be (már csak amiatt sem, mert a / és . hiányoztak a listáról).
Esetleg van valami bevett gyakorlat erre? Tehát: regexp, ami illeszkedik mindenre, kivéve, ha a sztring tartalmazza ezeket: /css, /img vagy /js.
Hozzászólások
Épp keresem a css|img|js mappát engedélyező .htaccess-em, addigis: az nem működik, hogy átirányítod a root-ba érkező minden kérést egy mappába, abba a mappába raksz egy külön .htaccess-t, ami viszont enged mindent a mappán belül? Nem sűrűn piszkálom a .htaccess-t, de ez úgy rémlik működik.
Szerk.: amit én használtam, az elejére illeszkedéssel szabadon volt hagyva, hogy a css és js mappában bármi lehessen, többet is felsorolhatsz egymás alá. (Javaslat: nem ártana egy ellenőrzés még, hogy azért csak css vagy js tartalom legyen a mappákban.)
RewriteCond %{REQUEST_URI} !^/?(/css/)
RewriteCond %{REQUEST_URI} !^/?(/js/)
RewriteRule .* do.php
(A feltételek között gyakorlatilag így "&" van, és ha az összes feltétel igaz, akkor megy a rewrite rule-ra.)
Köszi!! :-) Időközben találtam egy egybefogott kifejezést is, ami megfelelő:
^(?!\/css\/|\/img\/|\/js\/)(.+)$
A tesztprogramot ide tettem: https://pastebin.com/pRA7ti86