RewriteRule v .htaccess <document_root>u
- uestla
- Backer | 799
Přeji krásný den.
Měl bych dotaz k následujícímu (vyňato z .htaccess v
document_root
u):
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
Proč se i po kontrole, zda se nejedná o soubor ani o adresář, ověřuje, že URL nekončí na žádnou z uvedených přípon? Pokud mám v bootstrapu následující,
Route::$styles['filename'] = array(
Route::PATTERN => '.*',
);
$router[] = new Route('stahnout/<filename>', array(
'presenter' => 'Download',
'action' => 'default',
));
tak se kvůli zmiňovanému pravidlu ani nepošle požadavek na index.php, čili nezavadí o Nette.
Samozřejmě jsem si to přepsal na
RewriteRule (.*) index.php [L]
Jen by mne zajímalo, zda-li někdo neví, proč je stávající pravidlo takové, jaké je.
Děkuji.
- MilanLempera
- Člen | 11
Pravilo !-f je splněno, pokud se jde o neexistující soubor.
U uvedených typů souborů většinou nejde o chybu, kterou je potřeba oznamovat uživateli ( v praxi nejčastěji neexistující favicon.ico, robots.txt,… nebo překlep v cestě k souboru)
Takže předpokládám, že spouštět kvůli takovému požadavku framework je zbytečná zátěž serveru, protože prohlížeč chybovou stránku, kterou vygenerujete stejně s největší pravděpodobností zahodí.
Editoval MilanLempera (28. 1. 2011 14:58)