Potřebuji vychytavku do .htaccess
- smi
- Člen | 75
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
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
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
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
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
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)