将Django根重定向到管理面板

时间:2012-02-15 18:07:43

标签: python django apache django-admin mod-wsgi

我正在尝试将Django站点根目录重定向到Django管理面板,我大部分时间都已启动并运行。但是,我注意到除非项目URL中有一个尾部斜杠,否则页面上的链接不包含项目文件夹,而是尝试在站点根目录中查找应用程序。

所以,说我有一个项目foo和一个应用bar。如果您访问http://server/foo/(带有斜杠),一切正常,页面上的链接转到http://server/foo/bar。但是,如果访问http://server/foo,则生成的链接会转到http://server/bar,这会产生404错误。

如果我将WSGIScriptAlias设置为指向/foo/而不是/foo,如果我导航到/foo,则会出现404错误。我尝试使用Redirect在Apache conf中强制使用尾部斜杠,但我最终生成了一个递归重定向(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

我也尝试过简单地向所有Django网址添加斜杠:

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

但是它无法匹配项目根文件夹中的任何内容(尽管如果你导航到应用程序,那似乎工作正常)。

我正在使用带有mod_wsgi的Apache 2.2,这是配置:

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 个答案:

答案 0 :(得分:1)

尝试在settings.py中将APPEND_SLASH设为True。我有一个类似的问题,这为我修复了它。它应该默认为True,但我必须明确设置它。