2013-07-15 3 views
0

Я пишу веб-сайт в Mojolicious, которому необходимо перенаправить определенные файлы в зависимости от имени домена. То есть:Домен, зависящий от маршрутизации в Mojolicious

mydomain.com/foo -> controllerA#foo 
mydomain.es/foo -> controllerB#foo 

документация дает следующее решение:

$r->get('/foo')->over(host => qr/mydomain\.com/)->to('controllerA#foo'); 
$r->get('/foo')->over(host => qr/mydomain\.es/)->to('controllerB#foo'); 

Но и предупреждает меня, что это будет отключить кэширование маршрута.

Есть ли лучший способ сделать это? А если нет, то насколько плохо, что кэширование маршрута отключается? Этот веб-сайт должен иметь возможность обрабатывать множество запросов (до 10.000/час), поэтому я мог предположить, что кеширование маршрутов было предпочтительным.

Спасибо!

+0

Вы нашли приемлемый подход? –

+0

К сожалению, нет. Я закончил писать крючок, переписывающий URL-адрес, как вы предлагали, прежде чем отправлять его маршрутизатору, но это не идеальное решение, потому что все внутренние вызовы mojo (например, url_for) теперь вернут неправильный URL-адрес (он вернет mydomain.com/ foo/es, а не mydomain.es/foo). Я думаю, что корень проблемы - это просто отсутствие междоменной маршрутизации в модуле кэширования mojo. – JeppeHallgren

ответ

0

Один из способов, который приходит на ум, - это переписать запрос URI, прежде чем мозаичный видит его. Например:

mydomain.com/foo -> mydomain.com/foo/com 
mydomain.es/foo -> mydomain.com/foo/es 

Затем добавьте несколько маршрутов:

$r->get('/foo/com')->to('controllerA#foo'); 
$r->get('/foo/es')->to('controllerB#foo'); 
0

Я не знаю, как вы устанавливаете это приложение, но если вы используете Apache или NGIX в качестве обратного прокси-сервера, вы можете обращаться там происходит маршрутизация домена и переписывает его.

Смежные вопросы