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.