Added details of Aliasing filesystem paths to Using with Apache docs section
[catagits/Catalyst-Plugin-Static-Simple.git] / lib / Catalyst / Plugin / Static / Simple.pm
index 1084945..e15a9de 100644 (file)
@@ -8,7 +8,7 @@ use File::Spec ();
 use IO::File ();
 use MIME::Types ();
 
-our $VERSION = '0.19';
+our $VERSION = '0.20';
 
 __PACKAGE__->mk_accessors( qw/_static_file _static_debug_message/ );
 
@@ -22,7 +22,11 @@ sub prepare_action {
     # is the URI in a static-defined path?
     foreach my $dir ( @{ $config->{dirs} } ) {
         my $dir_re = quotemeta $dir;
-        my $re = ( $dir =~ m{^qr/}xms ) ? eval $dir : qr/^${dir_re}/;
+        
+        # strip trailing slashes, they'll be added in our regex
+        $dir_re =~ s{/$}{};
+        
+        my $re = ( $dir =~ m{^qr/}xms ) ? eval $dir : qr{^${dir_re}/};
         if ($@) {
             $c->error( "Error compiling static dir regex '$dir': $@" );
         }
@@ -34,6 +38,7 @@ sub prepare_action {
                 $c->_debug_msg( "404: file not found: $path" )
                     if $config->{debug};
                 $c->res->status( 404 );
+                $c->res->content_type( 'text/html' );
             }
         }
     }
@@ -209,6 +214,7 @@ sub serve_static_file {
         $c->_debug_msg( "404: file not found: $full_path" )
             if $config->{debug};
         $c->res->status( 404 );
+        $c->res->content_type( 'text/html' );
         return;
     }
 
@@ -272,7 +278,7 @@ Catalyst::Plugin::Static::Simple - Make serving static pages painless.
     # things or bypass Catalyst entirely in a production environment
     #
     # one caveat: the files must be served from an absolute path
-    # (ie. /images/foo.png)
+    # (i.e. /images/foo.png)
 
 =head1 DESCRIPTION
 
@@ -434,13 +440,14 @@ is automatically enabled when running Catalyst in -Debug mode.
     
 =head1 USING WITH APACHE
 
-While Static::Simple will work just fine serving files through Catalyst in
-mod_perl, for increased performance, you may wish to have Apache handle the
-serving of your static files.  To do this, simply use a dedicated directory
-for your static files and configure an Apache Location block for that
-directory.  This approach is recommended for production installations.
+While Static::Simple will work just fine serving files through Catalyst
+in mod_perl, for increased performance you may wish to have Apache
+handle the serving of your static files directly. To do this, simply use
+a dedicated directory for your static files and configure an Apache
+Location block for that directory  This approach is recommended for
+production installations.
 
-    <Location /static>
+    <Location /myapp/static>
         SetHandler default-handler
     </Location>
 
@@ -449,6 +456,25 @@ through Catalyst. You can leave Static::Simple as part of your
 application, and it will continue to function on a development server,
 or using Catalyst's built-in server.
 
+In practice, your Catalyst application is probably (i.e. should be)
+structured in the recommended way (i.e., that generated by bootstrapping
+the application with the C<catalyst.pl> script, with a main directory
+under which is a C<lib/> directory for module files and a C<root/>
+directory for templates and static files). Thus, unless you break up
+this structure when deploying your app by moving the static files to a
+different location in your filesystem, you will need to use an Alias
+directive in Apache to point to the right place. You will then need to
+add a Directory block to give permission for Apache to serve these
+files. The final configuration will look something like this:
+
+    Alias /myapp/static /filesystem/path/to/MyApp/root/static
+    <Directory /filesystem/path/to/MyApp/root/static>
+        allow from all
+    </Directory>
+    <Location /myapp/static>
+        SetHandler default-handler
+    </Location>
+
 =head1 PUBLIC METHODS
 
 =head2 serve_static_file $file_path