In de Kohana directory structuur gebruik ik een media directory die voor de hele applicatie toegankelijk is.
Indien er media wordt gebruikt in een Module e.g. '/modules/mijnmodule/media/*' kan deze niet direct benaderd worden door een path.
Dit wordt veroorzaakt door deze regel in het .htaccess bestand en willen we graag zo houden:
# Protect application and system files from being viewed RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
Je kan de media ook gewoon plaatsen in '/media' directory, maar dan valt de module uiteen in verschillende onderdelen.
De oplossing is door het path naar de media in de module directory na te bootsen d.m.v. een route in '/modules/mijnmodule/init.php' :
Route::set('mijnmodule_media', 'mijnmodule/media/', array('uri' => '(.*)+')) ->defaults(array( 'controller' => 'mijnmodule_media', 'action' => 'index' ));
Vervolgens wordt in '/modules/mijnmodule/classes/controller/mijnmodule/media.php' het echte path naar de media opgevraagd en teruggestuurd naar de browers met de juiste headers:
class Controller_Mijnmodule_Media extends Controller {public function action_index() { $uri = Request::current()->param('uri');
}
}
class Controller_Mijnmodule_Media extends Controller {public function action_index() {
} }
Een alternatieve oplossing gevonden op Stack Overflow door het aanpassen van het .htaccess bestand:
# Protect application and system files from being viewed RewriteCond %{REQUEST_URI} !^(.*/)*(application|application/cache|modules/[^/]*)/media/.*$ RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
Zie ook: Detecteren MIME type van een bestand