我正在尝试将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,但它似乎在根项目文件夹中不起作用。