Как я могу указать доменное имя на URL Django? - PullRequest
0 голосов
/ 15 марта 2011

У меня есть поддомен m.example.com, который я хочу указать на то же местоположение, что и example.com/mobile, работающий при установке apache2 / django1.3.

example.com - это целевая страница, и у меня настроен urls.py так, что URL-адреса, соответствующие /^mobile$/, будут обслуживаться мобильной версией страницы. Я посмотрел на <VirtualHost>, но я думаю, что для него требуется физическое местоположение, чтобы указать m.example.com, а с URL-адресами django физического места нет, кроме корня каталога проекта.

Я не уверен, сделано ли изменение конфигурации на стороне apache или на стороне django.

Я также изучил модуль mod_rewrite для Apache, но я бы предпочел, чтобы мне не пришлось перенаправлять m.example.com на example.com/mobile

Ответы [ 2 ]

4 голосов
/ 15 марта 2011

Я буду избегать перенаправления Apache, просто используя Middlewares.

Обычно используют промежуточное ПО для получения переменной контекста, которая дает текущий домен, который использует пользователь.

От: 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

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

def homepage(request):
    if request.subdomain == 'm':
         return movil_homepage(request)
    else:
         return default_homepage(request)

Вы даже можете получить декораторов и отобразить все виды на вашем сайте.

Еще более распространенным является просто создание второго проекта, использующего ту же базу данных. Это зависит от вас.

1 голос
/ 15 марта 2011

Хотя вы можете использовать прокси от m.example.com до example.com/mobile, это приведет к сбою функций reverse и url.

Таким образом, единственный правильный способ исправить это - создать дополнительный <VirtualHost>, который использует ^$ для ваших мобильных URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...