Ищете способ, как запустить тот же самый PSGI $app
для нескольких запросов, которые не определены mount prefix
. Как до mount
в таком screnario? Например. пусть говорят, что я в моем app.psgi
Установка приложения PSGI по регулярному выражению - разные пути -> одно приложение
use Plack::Builder;
my $defaultapp = sub { ... };
my $someapp = sub { ... };
my $otherapp = sub { ... };
builder {
mount '/some' => $someapp; # ok
#and here need something like:
mount "_regex_here" => $otherapp; #???
mount '/' => $defaultapp; #OK - last mount is the "default"
}
например, запросы соответствие
/some/path
- хочет быть обработаны$someapp
(это нормально)/[A-Z]\w+/\w+\.(xxx|yyy|zzz)$
- хочет быть обработаны$otherapp
- любой другой запрос может быть обработан
$defaultapp
(Ok тоже)
Это, вероятно, «damm-easy», но мое чтение через Plack::Builder не дает ответа. (Каждый mount
в Maual и примеры strict /path
на основе ...)
EDIT: Если это не возможное благодаря mount
возможно решить вышеуказанное требование в некоторой чистой (читай не хак) путь? Мне не нужно изменять PATH_INFO
, а также SCRIPT_NAME
(как это делает URLMap) - просто нужно запустить заданный $otherapp
для согласованных запросов.
EDIT2:
Чтобы быть более ясным. $someapp
и $otherapp
уже существуют приложения. Особенно $otherapp
- сложное приложение, которое обрабатывает каждый запрос по-своему, но запросы, которые «принадлежат» к $otherapp
, можно описать с помощью регулярных выражений.
Я не могу использовать mount /fixed/prefix
, потому что $otherapp
создает разные URL-адреса во время выполнения, например. например, на основе активности пользователей она может создать /Abc/xyz.eee
и/или /Zzz/uuu.ddd
и т.д .. Поэтому я не могу префикс $otherapp
как, например:
mount '/other' => $otherapp
Теперь хочу «импорт» этот старый fashinoed $otherapp
Ань новый сервер на базе PSGI и, кроме того, $defaultapp
и $someapp
сделают что-то с данными $otherapp
. Это звучит сложно, но в реальности это не так - нужно только запустить $otherapp
на основе запроса регулярного выражения, например. что-то, как в Apache SetHandler somehandler *.ext
...
Как про прокси-приложение, которое перенаправляет на другой по URL-адресу? –
Я использую Plack :: Builder для установки нескольких приложений Dancer2 на разных префиксах, например. '/ foo' и'/bar'.Dancer2 имеет сложную логику маршрутизации, включая подстановочные знаки и сопоставление регулярных выражений, поэтому я обрабатываю переменные маршруты. Возможно, вы могли бы сделать что-то подобное в своих приложениях? – ThisSuitIsBlackNot