Невозможно выполнить перенаправление домена в Django с сайта example.com на www.example.com. - PullRequest
1 голос
/ 12 апреля 2009

Я получаю следующее сообщение при просмотре example.com

500 - Internal Server Error

Я получаю сообщение об ошибке 404 при просмотре www.example.com, которое указывает, что мой сайт жив.

Как можно сделать перенаправление домена без .htaccess от Django с example.com на www.example.com?

Мои urls.py

     from django.conf.urls.defaults import *

     from django.contrib import admin
     admin.autodiscover()

     urlpatterns = patterns('',
     # Example:
     # (r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')),

     (r'^home/', include('index.html')),

     # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
     # to INSTALLED_APPS to enable admin documentation:
     (r'^admin/doc/', include('django.contrib.admindocs.urls')),

     (r'^admin/(.*)', admin.site.root),
     )

[править]

У меня есть следующий ответ от Djangohosting:

Удалите веб-прокси для [example.com] и добавьте [example.com] в раздел псевдонимов на сайте [www.example.com].

Я не совсем уверен, что это значит.

  1. Как вы можете удалить прокси сайта для example.com?
  2. Где найти раздел псевдонимов на сайте www.example.com?

Ответы [ 4 ]

6 голосов
/ 13 апреля 2009

Я не знаю, решит ли это все ваши проблемы, но если вы хотите сделать это через django, попробуйте промежуточное ПО

from django.http import HttpResponseRedirect

class WWWRedirectMiddleware(object):
    def process_request(self, request):
        if not request.META['HTTP_HOST'].startswith('www.'):
            return HttpResponseRedirect('http://www.example.com')

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

На основании этого , не проверял.

3 голосов
/ 12 апреля 2009

Проверка Настройка PREPEND_WWW может помочь.

2 голосов
/ 12 апреля 2009

Ошибка 500 Internal Server, вероятно, вызвана этой строкой:

(r'^home/', include('index.html')),

Функция include() позволяет подключать другие файлы конфигурации URL, а не статические файлы HTML. Вам нужно будет либо index.html использовать статический файл по указанному URL (/ home), либо написать представление, которое просто отображает файл.

1 голос
/ 12 апреля 2009

Я получаю следующее сообщение при просмотре example.com

500 - Внутренняя ошибка сервера

Я получаю сообщение об ошибке 404 при просмотре www.example.com, которое указывает, что мой сайт жив.

Вероятно, наоборот. Сообщение 500 означает, что ваш сайт активен, но выдает ошибку. Вы должны понять, что example.com / www.example.com часть URL-адреса служит для поиска к какому серверу подключиться. К тому моменту, когда ваше приложение Django будет вызвано, эта часть уже завершена, поэтому сделать это из Django невозможно.

Вместо этого вы хотите настроить www как поддомен example.com и заставить их указывать на одно и то же место. Смотрите первый пример здесь: примеры виртуальных хостов

ОБНОВЛЕНИЕ Я только что заметил, что вы заявили, что ваш 404 обнаружился, поэтому проигнорируйте первые два предложения. В любом случае, решение, вероятно, будет таким же. : -)

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