Htaccess in RedirectMatch 404

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-3
det.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 mod
rewrite 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

Tale stran je zakon, če bi jo imel nekaj časa nazaj, bi mi tudi prihranila kar nekaj časa :)

Velik veselja :)

1