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을 다시 쓰는 것을 끝내었다. 그러나 모든 내부 모조 호출 (예 : url_for)이 이제 잘못된 URL을 반환하기 때문에 실제로 이상적인 솔루션은 아니다 (mydomain.com/ foo/es, mydomain.es/foo가 아님). 문제의 근본 원인은 단순히 mojo의 캐싱 모듈에서 크로스 도메인 라우팅이 부족하다는 것입니다. – JeppeHallgren

답변

0

mojolicious가보기 전에 요청 URI를 다시 작성하는 것이 하나의 방법입니다. 예를 들어 :

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

난 당신이 응용 프로그램을 배포하는 방법을 알고하지 않습니다,하지만 당신은 역방향 프록시로 Apache 또는 NGIX를 사용하는 경우, 당신은 처리 할 수있는 :

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

그런 다음 몇 가지 경로를 추가 도메인 라우팅 거기에 그것을 다시 작성하십시오.

관련 문제