Я пытаюсь перенаправить корень сайта 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, но оно не работает в корневой папке проекта.