Hi!
I run a website, changing now from FCGI to PSGI using Plack as server.
The behaviour should be the same as with the old Apache website,
(which I configured with .htaccess files for each directory) so I want to
use js when it is needed, and show it as text/plain when someone clicks such a non binary file in my download directory.
I don't want to use dancer etc now, because I had to make big changes to the website then (FCGI and PSGI are quite similar to use).
I tested a bit and the behaviour seems to be version dependent (on Windows it works, on CentOS not),
but I want a safe way using different Plack::MIME instances for different directories.
What I have now uses the same Plack::MIME instance and doesn't work correctly when I include .html, .css etc there:
use Plack::Builder;
use Plack::MIME;
# normal behaviour /html/
# special behaviour /html/downloads/
for my $expr (
".c", ".cpp",".csv", ".dat", ".dpl"
, ".gp", ".h", ".hpp", ".ini"
, ".java", "makefile", ".m", ".mac"
, ".pl", ".pm", ".pod", ".py"
, "README", ".sch", ".sh", ".txt") {
Plack::MIME->add_type($expr => 'text/plain');
}
builder {
enable 'Plack::Middleware::Static',
path => qr{/html/}, root => '.';
# normal behaviour:
# needs a new content_type instance! how doing this?
# enable 'Plack::Middleware::Static',
# path => qr{^/html/(?!downloads).*\.
# (css|gif|jpg|js|pdf|png)$}, root => '.';
mount "/" => $app1;
mount "/imggenerator.pl" => $app2;
};
I could treat every single file in my $app1, but I think configuring that with Plack should be possible.