use warnings;
use base qw/Class::Accessor::Fast Class::Data::Inheritable/;
use File::stat;
+use File::Spec::Functions qw/catdir no_upwards splitdir/;
use IO::File;
use MIME::Types;
use NEXT;
-our $VERSION = '0.12';
+our $VERSION = '0.13';
__PACKAGE__->mk_classdata( qw/_static_mime_types/ );
__PACKAGE__->mk_accessors( qw/_static_file
sub _locate_static_file {
my $c = shift;
- my $path = $c->req->path;
+ my $path = catdir( no_upwards( splitdir( $c->req->path ) ) );
my @ipaths = @{ $c->config->{static}->{include_path} };
my $dpaths;
next DIR_CHECK;
}
} else {
- $dir =~ s/\/$//xms;
+ $dir =~ s/(\/|\\)$//xms;
if ( -d $dir && -f $dir . '/' . $path ) {
# do we need to ignore the file?
for my $ignore ( @{ $c->config->{static}->{ignore_dirs} } ) {
- $ignore =~ s{/$}{};
- if ( $path =~ /^$ignore\// ) {
+ $ignore =~ s{(/|\\)$}{};
+ if ( $path =~ /^$ignore(\/|\\)/ ) {
$c->_debug_msg( "Ignoring directory `$ignore`" )
if ( $c->config->{static}->{debug} );
next DIR_CHECK;