GSP
Quick Navigator

Search Site

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

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Plack::Middleware::Static(3) User Contributed Perl Documentation Plack::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/';
      $app;
  };

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
2020-11-30 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

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