무슨 일이 일어나고 있는지 이해하려면 Apache와 같은 웹 서버의 일반적인 기능인 virtual hosting에 대해 알아야합니다.
두 개 이상의 호스트 또는 DNS 항목이 동일한 IP 주소를 가리키면 웹 브라우저가 두 개 이상의 호스트 이름 (예 : m.mydomain.com
및 mydomain.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을 따르는 것이 가능해야합니다.
[호스트 이름 기반 라우팅에 대한이 문서] (http://symfony.com/doc/current/components/routing/hostname_pattern.html)가 도움이되지 않습니까? –
아니요. 내 질문에 전혀 답하지 않습니다. 내가 정말로 알고 싶은 것은 - 매치하는 각 호스트의 도메인에 Symfony2 앱을 설치해야합니까? 예 - m.mydomain.com과 mydomain.com 모두에 symfony2 앱을 설치 하시겠습니까? 따라서 경로가 실제로 일치 할 수 있습니까? –
두 도메인 모두 같은 위치를 가리켜 야합니다. 웹/디렉토리 –