Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Plack::Middleware::StaUser3Contributed Perl DocumePlack::Middleware::Static(3)

       Plack::Middleware::Static - serve static	files with Plack

	 use Plack::Builder;

	 builder {
	     enable "Plack::Middleware::Static",
		 path => qr{^/(images|js|css)/}, root => './htdocs/';

       This middleware allows your Plack-based application to serve static

       Note that if you	are building an	app using Plack::App::URLMap, you
       should consider using Plack::App::File to serve static files instead.
       This makes the overall routing of your application simpler to

       With this middleware, if	a static file exists for the requested path,
       it will be served. If it	does not exist,	by default this	middleware
       returns a 404, but you can set the "pass_through" option	to change this

       If the requested	document is not	within the "root" or the file is there
       but not readable, this middleware will return a 403 Forbidden response.

       The content type	returned will be determined from the file extension by
       using Plack::MIME or using "content_type".

       path, root
	     enable "Plack::Middleware::Static",
		 path => qr{^/static/},	root =>	'htdocs/';

	   The "path" option specifies the URL pattern (regular	expression) or
	   a callback to match against requests. If the	<path> option matches,
	   the middleware looks	in "root" to find the static files to serve.
	   The default value of	"root" is the current directory.

	   This	example	configuration serves "/static/foo.jpg" from
	   "htdocs/static/foo.jpg". Note that the matched portion of the path,
	   "/static/", still appears in	the locally mapped path	under "root".
	   If you don't	want this to happen, you can use a callback to munge
	   the path as you match it:

	     enable "Plack::Middleware::Static",
		 path => sub { s!^/static/!! },	root =>	'static-files/';

	   The callback	should operate on $_ and return	a true or false	value.
	   Any changes it makes	to $_ are used when looking for	the static
	   file	in the "root".

	   The configuration above serves "/static/foo.png" from
	   "static-files/foo.png", not "static-files/static/foo.png". The
	   callback specified in the "path" option matches against $_ munges
	   this	value using "s///". The	substitution operator returns the
	   number of matches it	made, so it will return	true when the path
	   matches "^/static".

	   For more complex static handling in the "path" callback, in
	   addition to $_ being	set the	callback receives two arguments,
	   "PATH_INFO" (same as	$_) and	$env.

	   If you want to map multiple static directories from different
	   roots, simply add this middleware multiple times with different
	   configuration options.

	   When	this option is set to a	true value, then this middleware will
	   never return	a 404 if it cannot find	a matching file. Instead, it
	   will	simply pass the	request	on to the application it is wrapping.

	   The "content_type" option can be used to provide access to a
	   different MIME database than	Plack::MIME.  Plack::MIME works	fast
	   and good for	a list of well known file endings, but if you need a
	   more	accurate content based checking	you can	use modules like
	   File::MimeInfo or File::MMagic for example.	The callback should
	   work	on $_[0] which is the filename of the file.

       Tokuhiro	Matsuno, Tatsuhiko Miyagawa

       Plack::Middleware Plack::Builder

perl v5.32.0			  2018-02-10	  Plack::Middleware::Static(3)


Want to link to this manual page? Use this URL:

home | help