我試圖將Django站點根重定向到Django管理面板,並且我主要將其啓動並運行。但是,我注意到,除非項目URL中有斜線,否則頁面上的鏈接不包含項目文件夾,而是嘗試在網站根目錄中查找應用程序。將Django根重定向到管理面板
所以,說我有一個項目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的網址,像這樣:
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
是主要工作:APPEND_SLASH
設置爲
urlpatterns = patterns('',
url(r'^', include(admin.site.urls)),
)
我已確認確實,但它似乎不能在根項目文件夾中工作。
爲什麼'/ foo'會被重定向到'/ bar'?這個重定向在哪裏發生? – 2012-02-15 18:10:43
它並不真正將'/ foo'重定向到'/ bar'--相反,頁面上生成的url會轉到'/ bar'而不是'/ foo/bar'。 – Hannele 2012-02-15 18:12:53