2013-07-21 2 views
0

그래서 Symfony의 호스트 기반 라우팅을 이용하고 싶습니다.Symfony 2.2 이상의 호스트 기반 라우팅 설정

내가 m.mydomain.com과 mydomain.com을 구성한다고 가정 해 보겠습니다. 그러나 동일한 앱 (Symfony 앱)이 모두를 관리하도록하고 싶습니다.

m.mydomain.com은 서버의 다른 하위 도메인입니다. 기본적으로 두 도메인은 완전히 다른 위치를 가리 킵니다. Symfony2가 실제로 응용 프로그램의 하나의 인스턴스를 사용하여 두 도메인을 실제로 제어 할 수 있습니까? 아니면 실제로 지원되는 각 호스트 이름에 심포니 앱 인스턴스 하나를 설치해야합니까? 이 작업을 구체적으로 수행하려면 .htaccess 구성이 필요합니까?

호스트 기반 라우팅은 실제로 어떻게 작동합니까?

+0

[호스트 이름 기반 라우팅에 대한이 문서] (http://symfony.com/doc/current/components/routing/hostname_pattern.html)가 도움이되지 않습니까? –

+0

아니요. 내 질문에 전혀 답하지 않습니다. 내가 정말로 알고 싶은 것은 - 매치하는 각 호스트의 도메인에 Symfony2 앱을 설치해야합니까? 예 - m.mydomain.com과 mydomain.com 모두에 symfony2 앱을 설치 하시겠습니까? 따라서 경로가 실제로 일치 할 수 있습니까? –

+0

두 도메인 모두 같은 위치를 가리켜 야합니다. 웹/디렉토리 –

답변

0

무슨 일이 일어나고 있는지 이해하려면 Apache와 같은 웹 서버의 일반적인 기능인 virtual hosting에 대해 알아야합니다.

두 개 이상의 호스트 또는 DNS 항목이 동일한 IP 주소를 가리키면 웹 브라우저가 두 개 이상의 호스트 이름 (예 : m.mydomain.commydomain.com)을 통해 동일한 웹 서버에 액세스 할 수 있습니다. 브라우저가 HTTP 1.1을 사용하는 페이지를 요청하면 (이 경우를 가정해도 안전합니다) 웹 서버는 연결에 사용 된 호스트 이름을 알 수 있습니다.

웹 서버는 호스트 이름에 따라 다른 웹 사이트를 제공하도록 구성 할 수 있습니다. 각 웹 사이트 구성은 일반적으로 가상 호스트라고합니다.

가상 호스트가 여러 호스트 이름에 대해 동일한 웹 사이트 (또는 웹 응용 프로그램)를 제공 할 수도 있습니다. 이것의 아파치 구성은 다음과 같습니다

<VirtualHost *:80> 
    ServerName mydomain.com 
    ServerAlias m.mydomain.com 
    DocumentRoot /var/www/mydomain/web 

    # ... 
</VirtualHost> 

심포니가 요청을 처리 할 때 PHP 자동 전역 $_SERVER['SERVER_NAME']를 통해 호스트에 액세스 할 수 있습니다. 이것은 시작시에 슈퍼 전역 배열을 지우므로 응용 프로그램 코드 내에서이를 사용할 수 없습니다. 대신 현재 요청 객체의 인스턴스에 getHost()을 호출하십시오.

Symfony의 라우팅 구성 요소는 동일한 정보를 사용하여 호스트 이름별로 요청을 필터링합니다. 클래스 Symfony\Component\Routing\Matcher\UrlMatcher을 참조하십시오.

무슨 일이 일어나고 있는지 잘 알고 있으면 다른 호스트 이름을 통해 동일한 가상 호스트에 연결할 수 있도록 웹 서버를 설정 한 다음 Symfony 문서 How to Match a Route Based on the Host을 따르는 것이 가능해야합니다.