我正在尝试将Django站点根目录重定向到Django管理面板,并且我基本上已经启动并运行了它。然而,我注意到,除非项目URL中有一个尾随的斜杠,否则页面上的链接不会包含项目文件夹,而是尝试在站点根目录中查找应用程序。
因此,假设我有一个项目foo
和一个应用程序bar
。如果您访问http://server/foo/
(带有一个尾随斜杠),则一切正常,并且页面上的链接将转到http://server/foo/bar
。但是,如果访问http://server/foo
,则生成的链接将转到http://server/bar
,这会生成404错误。
如果我将WSGIScriptAlias
设置为指向/foo/
而不是/foo
,那么如果我导航到/foo
,它将给出一个404错误。我尝试使用重定向在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 urls添加一个斜杠,如下所示:
url(r'^(.*)/', include(admin.site.urls))
但它根本无法匹配项目根文件夹中的任何内容(尽管如果您导航到应用程序,这似乎可以正常工作)。
我使用的是带有mod_wsgi的Apache2.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,但它似乎在根项目文件夹中不起作用。
发布于 2012-02-16 02:15:44
尝试在settings.py
中将APPEND_SLASH
设置为True。我也有类似的问题,这个解决了我的问题。它应该默认为True,但我必须显式设置它。
https://stackoverflow.com/questions/9298820
复制相似问题