2011-03-14 2 views
0

서브 도메인이 m.example.com이고 apache2/django1.3 설치에서 실행되는 example.com/mobile과 같은 위치를 가리키고 싶습니다.어떻게 도메인 이름을 장고 URL로 가리 킵니까?

example.com은 방문 페이지이며 /^mobile$/과 일치하는 URL이 페이지의 모바일 버전으로 제공되도록 urls.py을 구성했습니다. 나는 <VirtualHost>을 들여다 보았다. 그러나 나는 그것이 나를위한 물리적 위치가 m.example.com이고, 장고 URL은 프로젝트 디렉토리의 루트를 제외하고 물리적 인 위치가 없다고 생각한다.

구성이 아파치 측 또는 장고 측에서 변경되었는지 확실하지 않습니다.

은 또한 아파치에 대한 mod_rewrite 모듈을 검토 한 결과,하지만 난에 reverseurl 기능을 일으킬 것이다, 당신은 프록시 m.example.comexample.com/mobile을 할 수 있지만 example.com/mobile

답변

4

미들웨어 만 사용하여 아파치 리다이렉션을 피할 것입니다.

미들웨어를 사용하여 사용자가 사용중인 현재 도메인을 제공하는 컨텍스트 변수를 얻는 것이 일반적입니다.

은 보낸 사람 :보기에 http://djangosnippets.org/snippets/1119/

class SubdomainMiddleware: 
    """ Make the subdomain publicly available to classes """ 

    def process_request(self, request): 
     domain_parts = request.get_host().split('.') 
     if (len(domain_parts) > 2): 
      subdomain = domain_parts[0] 
      if (subdomain.lower() == 'www'): 
       subdomain = None 
      domain = '.'.join(domain_parts[1:]) 
     else: 
      subdomain = None 
      domain = request.get_host() 

     request.subdomain = subdomain 
     request.domain = domain 

, 제대로 내용과 논리를 전환 할 하위 도메인 및 도메인 값을 사용할 수 있습니다.

데코레이터를 얻을 수도 있고 웹 사이트의 모든 뷰를 매핑 할 수도 있습니다.

더 많은 공통점은 동일한 데이터베이스를 사용하는 두 번째 프로젝트를 만드는 것입니다. 그것은 당신에게 달려 있습니다.

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. 결국, 나는 request.path_info를 다시 작성한 미들웨어를 작성했다. github에서 좀 더 둥근 솔루션을 찾았습니다. https://github.com/tkaemming/django-subdomains – username2

1

m.example.com 리디렉션해야 didnt가 있다면 내가 선호 단절.

모바일 주소로 <VirtualHost>을 추가로 작성하는 유일한 방법은 ^$입니다.

관련 문제