Htaccess in RedirectMatch 404
2 naročnika
2 naročnika
ivjo,
potreboval bi malo pomoči.
V htaccess-u bi rad preprečil neposredni dostop do datotek, če nekdo vpiše celotno pot, dovolil pa bi, da dostopa preko posebne povezave.
Želim, da je tako:
www.stran.local/clip/clip-preview/3det... - nedovoljena zahteva - 404 napaka
www.stram.local/videopreview-3det.webm - dovoljena zahteva, serviraj datoteko
Trenutno imam takole:
video preview - revrite url
RewriteRule ^videopreview-(.*)$ /clip/clip-preview/$1 [L]
video preview - Prevent direct access - 404 code
RedirectMatch 404 ^/clip/clip-preview(/?|/.*)$
Težava pa je, da mi javi 404. Čeprav imam nastavljeno [L] parameter se spodnja vrstica izvede.
hvala
5 odgovorov
Uporabi modrewrite za cel blok, loopanje pa prepreči z "RewriteCond". Naj bo pogoj tak da se v drugo ne bo ujemal. Pa bo šlo.
Moral bi preverit, vendar "Last" se upošteva samo za modrewrite ne pa tudi za drug modul. Pa tud obnaša se ne tako, kot bi po imenu pričakoval.
Ful ti hvala, nisem na to niti pomislil :).
Tale last sem že nekajkrat opazil, da se čudno obnaša. Npr. [L,R=302], ali [R=302, L] :).
Bo očitno potrebno bolj detajlno prebrati dokumentacijo.
Če uporabljaš php fopen je tale varjanta super, ker ti faila vse HTTP requeste.
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^clip\ /([^/]+)/.\ HTTP [NC]
RewriteRule . - [F,L]
Na tvoj način si pa narobe obrnil, pa RewriteCond pozabil. Prvo prepoveš dostop do mape, če gre direkt. Potem pa pravilo za rewrite za "dovoljen dostop", z L ali pa kar END.
Branje:
http://www.askapache.com/htaccess/modrewrite-tips-tricks.html