Přesměrování neexistujícího obrázku do presenteru
- Jija
- Člen | 4
Ahoj,
chtěl umožnit dynamické generování obrázků. (Konkrétně půjde o pokus
stáhnout obrázek ve správné velikosti například z Amazon S3,pokud už
nebude stažený. Ne nechci linkovat přímo S3.)
Snažím se proto nastavit htaccess tak, aby mě skrytě přesměroval na
volání actiony v presenteru, pokud uživatel požaduje neexistující
obrázek v určité podsložce.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^images/([^.]+\.(jpe?g|gif|bmp|png))$ /home/get-image/?image= //
jediný přidaný řádek
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|txt|rar|zip|tar\.gz)$
index.php [L]
Adresa http://ob.local/home/get-image se mi matchne správně na
action.
Existující obrázek se správně zobrazí
Neexistující obrázek viz. http://ob.local/…s/close2.png se ale nepřepíše jak má:
No route for HTTP request.
Image se do _GET propíše, ale to je jediný úspěch.
Odhaduji, že přepisovat url v htaccesu je už pozdě pro nette. Ale co s tím? Důležité je, že prohlížeč, nesmí poznat přesměrování.
Moc děkuji za jakýkoliv tip.
Editoval Jija (29. 5. 2018 21:11)
- Jija
- Člen | 4
CZechBoY napsal(a):
Routovani se deje v aplikace, proto je potreba upravit router v Nette a ne htaccess.
Tak teď se cítím dost hloupě. Hledal jsem složitosti tam kde nejsou.
Díky moc.
Nakonec stačilo do Routeru přidat:
$router[] = new Route(‚images/<file>‘, [
‚module‘ ⇒ ‚Front‘,
‚presenter‘ ⇒ ‚Home‘,
‚action‘ ⇒ ‚getImage‘,
‚file‘ ⇒ [
Route::FILTER_OUT ⇒ function ($uri) { return $uri; },
Route::PATTERN ⇒ „.*“,
],
]);
viz. https://pla.nette.org/…tr-s-lomitky