Potřebuji vychytavku do .htaccess

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
smi
Člen | 75
+
0
-

Mám web, kde jsou soubory v public (www_root, document_root či jak to kdo nazývá) a potřebuji, aby i při přístupu na ně vše prošlo skrz Nette – tahle část může obsahovat html, php, ale i obrázky, xml kod, …
„Venku“ je to, protože se indexuje kvůli hledaní Jyxem, … .

Přes Nette to musím hnát, abych otestoval opravnění k přístupu do uzavřené sekce (nejde pořád měnit .htpasswd a s tím spojené věci, přístup je více úrovnový, …)

Upravil jsem si .htaccess takto

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ index.php [L]

Jenže to mi sežere všechny css, js, gif, … ! – prostě všechny soubory potřebné k designu webu.

Neznáte někdo nějakou fintu, jak to prohnat přes Nette, aniž bych musel mít v RewriteRule krkolomnou podmínku ?

Editoval smi (29. 5. 2011 0:35)

Jur4
Člen | 51
+
0
-

Nešlo by to třeba takto? V document_rootu vytvořit adresář public, do kterého by se přesunulo vše co má být veřejně přístupné. A do .htaccessu by pak přišlo něco jako tohle (netestoval jsem to).

RewriteEngine On
RewiteRule !^public/ index.php [L] # vše kromě věcí z adresáře public směruj na index.php
smi
Člen | 75
+
0
-

Jur4 napsal(a):

Nešlo by to třeba takto? V document_rootu vytvořit adresář public, do kterého by se přesunulo vše co má být veřejně přístupné. A do .htaccessu by pak přišlo něco jako tohle (netestoval jsem to).

RewriteEngine On
RewiteRule !^public/ index.php [L] # vše kromě věcí z adresáře public směruj na index.php

Tak nějak to budu muset udělat (i když jsem zjistil, že mám jen 3 povolené adresáře /img, /js, /css a *.ico a robots.txt)

ic
Člen | 430
+
0
-

Ten dotaz mi přijde trošičku nejasný, ale to by mělo nějak jít udělat…
Využít by šlo toho ‚seznamu výjimek‘ co v každém .htaccessu je – běžný regulární výraz:

RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]

z toho můžu vyloučit třeba rar, a zip, které teď půjdou do nette a tam nějak routerem nasměruji na ověření oprávnění a přidám vždy přístupnou složku a třeba i jeden .zip soubor, který má jít pro všechny:

RewriteRule !(\.(pdf|js|ico|gif|jpg|png|css|tar\.gz)|slozka|soubor.zip)$ index.php [L]

Editoval ic (29. 5. 2011 10:25)

Jur4
Člen | 51
+
0
-

smi napsal(a):

Tak nějak to budu muset udělat (i když jsem zjistil, že mám jen 3 povolené adresáře /img, /js, /css a *.ico a robots.txt)

To by pak ten Rewrite mohl vypadat nějak takhle.

RewiteRule !^img/|js/|css/|(.*)\.ico|robots\.txt index.php [L]

Ale osobně bych šel spíše cestou veřejného adresáře. Odpadne nutnost editovat .htaccess, když přidáš něco dalšího.

Takže bych to viděl nějak takhle.

RewiteRule !^public/|(.*)\.ico|robots\.txt index.php [L]

Editoval Jur4 (29. 5. 2011 11:01)

smi
Člen | 75
+
0
-

ic napsal(a):

Ten dotaz mi přijde trošičku nejasný, ale to by mělo nějak jít udělat…
Využít by šlo toho ‚seznamu výjimek‘ co v každém .htaccessu je – běžný regulární výraz:

RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]

z toho můžu vyloučit třeba rar, a zip, které teď půjdou do nette a tam nějak routerem nasměruji na ověření oprávnění a přidám vždy přístupnou složku a třeba i jeden .zip soubor, který má jít pro všechny:

RewriteRule !(\.(pdf|js|ico|gif|jpg|png|css|tar\.gz)|slozka|soubor.zip)$ index.php [L]

No mám tam:

RewriteRule !(\.(ico)|(css|js|img)/|robots.txt)(.+)$ index.php [L]

ale zdálo se mi to příliš složité a hlavně další pravidlo navíc, které se volá pokaždé

(Ale díky za potvrzení, že asi nejdu špatnou cestou)