Điều này tôi đang cố chuyển trang web Apache/Modperl hiện tại của tôi sang Starman và cần xây dựng app.psgi với các trình xử lý khác nhau cho các phần mở rộng tệp khác nhau. Somthing như trong Apache:Chuyển đổi cấu hình Modperl thành Plack - chạy các trình xử lý khác nhau theo phần mở rộng tập tin
<LocationMatch "(\.m|\.mh|\/)$">
SetHandler perl-script
PerlHandler MyApp::Mhandler
</LocationMatch>
<LocationMatch "(\.p|\.ph)$">
SetHandler perl-script
PerlHandler MyApp::Phandler
</LocationMatch>
Bây giờ tôi có:
#app for handle .m and .mh
my $Mapp = Some::PSGI->handler(sub {
...
});
#app for handling .p and .ph
my $Papp = SomeOther::PSGI->handler(sub {
...
});
nhưng làm thế nào để sử dụng xây dựng?
builder {
#any extension what is not .m .mh .p .ph - handle as static
#but, only when the request have any extension
enable "Plack::Middleware::Static",
path => __what here__, ???
root => "/my/doc/root";
#and what here to achieve the following "rules".
#??? $Papp
#default $Mapp
};
Needed "quy tắc":
- nếu yêu cầu không có bất kỳ phần mở rộng, hoặc các yêu cầu kết thúc bằng '/'
- cần được xử lý với
$Mapp
- cần được xử lý với
- nếu yêu cầu kết thúc bằng một số tiện ích, sau đó
.m
và.mh
nên được xử lý bởi$Mapp
.p
và.ph
nên được xử lý bởi$Papp
- tất cả các file khác với phần mở rộng (như .css .js .pdf .jpg ...) nên được xử lý như tĩnh.
Chắc chắn, sẽ dễ dàng hơn đưa mỗi tập tin tĩnh vào một số cây, nhưng các ứng dụng hiện tại là đưa ra và bây giờ tôi chỉ muốn di chuyển nó vào Startman, refactoring - sau đó.
huh! Cố gắng hiểu điều này. :) – kobame
nhưng CÓ! Bí quyết chính là sử dụng "phụ" trong đường dẫn cho Tĩnh và nhóm hai ứng dụng thành một để quyết định. BTW, không bao giờ sử dụng bất kỳ Tie nào ..;) THANX rất nhiều !!! :) – kobame