Перенаправление корня Django в админ панель - PullRequest
5 голосов
/ 15 февраля 2012

Я пытаюсь перенаправить корень сайта Django в админ-панель Django, и я в основном запустил его. Однако я заметил, что если в URL-адресе проекта нет косой черты, ссылки на странице не включают папку проекта, а вместо этого пытаются найти приложения в корне сайта.

Итак, скажем, у меня есть проект foo и приложение bar. Если вы посещаете http://server/foo/ (с косой чертой), все работает нормально, а ссылки на странице ведут на http://server/foo/bar. Однако, если один посетит http://server/foo, сгенерированные ссылки перейдут на http://server/bar, что приведет к ошибке 404.

Если я установлю WSGIScriptAlias для указания /foo/ вместо /foo, это даст ошибку 404, если я перейду к /foo. Я пытался принудительно завершить косую черту в Apache conf с Redirect, но в итоге я создал рекурсивный редирект (http://server/foo//////...). Я еще не пробовал использовать файл .htaccess, но подозреваю, что может произойти то же самое.

Я попробовал то же самое в urls.py, однако:

url(r'^$', redirect_to, {'url': '/'}), # goes to server root http://server/
url(r'^$', redirect_to, {'url': 'foo/'}), # goes to http://server/foo/foo
url(r'^$', redirect_to, {'url': '/foo/'}), # infinite redirect

Я также попытался просто добавить косую черту ко всем URL-адресам Django следующим образом:

url(r'^(.*)/', include(admin.site.urls))

Но в корневой папке проекта ничего не совпадает (хотя при переходе к приложению это работает нормально).

Я использую Apache 2.2 с mod_wsgi, вот конфигурация:

Alias /static "C:/DJANGO~1/apps/django/django/contrib"

<Directory 'C:/DJANGO~1/apps/django/django/contrib'>
  Order allow,deny
  Allow from all
</Directory>

WSGIScriptAlias /foo "C:/Djangostack/apps/django/scripts/django.wsgi"

<Directory 'C:/Djangostack/apps/django/scripts'>
  Order allow,deny
  Allow from all
</Directory>

И это urls.py, которое в основном работает:

urlpatterns = patterns('',
  url(r'^', include(admin.site.urls)),
)

Я убедился, что для APPEND_SLASH установлено значение True, но оно не работает в корневой папке проекта.

1 Ответ

1 голос
/ 15 февраля 2012

Попробуйте установить APPEND_SLASH в значение True в вашем settings.py.У меня была похожая проблема, и это исправило ее для меня.Предполагается, что по умолчанию установлено значение True, но мне пришлось установить его явно.

...