RewriteCond %{REQUEST_URI} !^/subfolder1/subfolder2$
RewriteRule . - [F,L]
Din cauza ancorei de la capătul firului ($) aceasta doar permite /subfolder1/subfolder2 exact (nu /subfolder1/subfolder2/script.php) și blochează orice altceva. De cand /subfolder1/subfolder2 este probabil un director fizic, apoi mod_dir va redirecționa pentru a adăuga slash-ul final, care va fi apoi blocat de această regulă. Deci da, se blochează Tot.
Trebuie să îndepărtați ancora de la capătul coardei ($) de la sfârșitul CondPattern. De exemplu:
RewriteCond %{REQUEST_URI} !^/subfolder1/subfolder2
Deși, strict vorbind, pentru a evita conflictul cu orice ar putea începe pur și simplu subdosar 2 (de exemplu. subfolder2foo.php) atunci ar trebui să utilizați un regex ca ^/subfolder1/subfolder2($|/) in schimb.
Rețineți că, dacă aceasta este singura cale URL pe care trebuie să o permiteți, nu aveți nevoie de condiție, deoarece testul trebuie efectuat în RewriteRule directivă. De exemplu:
RewriteRule !^/subfolder1/subfolder2($|/) - [F]
The L steag nu este necesar cu F steag; este subînțeles.
Alternativ, nu utilizați deloc mod_rewrite. De exemplu:
<Directory /my/path>
Require all denied
</Directory>
<Directory /my/path/subfolder1/subfolder2>
Require all granted
</Directory>
Acest lucru este de preferat mod_rewrite, cu excepția cazului în care aveți alte cerințe.