Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  PLACK::MIDDLEWARE::STATIC (3)

.ds Aq ’


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 files.

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 understand.

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 behavior.

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.

pass_through 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.
content_type 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
Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 PLACK::MIDDLEWARE::STATIC (3) 2015-06-03

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.