2013-07-24 76 views
1

我有一個Django網站運行在IIS下與Helicon動物園的幫助。它位於虛擬目錄中(所以,它的網址看起來像http://mysite.com/django)。Django在IIS(與HeliconZoo)在虛擬目錄 - 網址解析器的工作與路徑沒有目錄名稱

在我的urls.py,我有這樣的定義的模式:

urlpatterns = patterns('', 
    ....   
    url(r'^django/status/(?P<product>.*)/$',views.status), 
    .... 
) 

但是,當我打開網址一樣http://mysite.com/django/status/some_product 我得到404頁面信息:

Using the URLconf defined in urls, Django tried these URL patterns, in this order: 
.... 
The current URL, status/some_product/, didn't match any of these. 

由於你可以看到,在被測試的URL中沒有django。當然,當我改變模式是這樣的:

url(r'^status/(?P<product>.*)/$',views.status), 

一切工作正常,但如果APPEND_SLASH啓用(而且我已經啓用並在settings.py將其設置爲False沒有幫助出於某種原因),我的請求像http://mysite.com/django/status/some_product被重定向到http://mysite.com/status/some_product/

所以,問題是: 如何配置Django,使其不會拋出虛擬目錄名稱?

有什麼我需要知道如何打開APPEND_SLASH? 現在我簡單地把APPEND_SLASH = False放在settings.py中,但沒有區別。

注:我對Django和Python幾乎一無所知,我無法改變該網站的設置方式(至少現在)。

+0

Django收到的請求可能不包含完整路徑(包括/ django /)。我懷疑這是因爲你的服務器配置。 – bouke

+0

是的,這可能是,但不清楚如何找出哪個微小的選項負責( –

回答

0

最後,我發現它有什麼問題。

似乎所描述的行爲的原因是提供默認的web.config文件中的設置:

<add name="django.root" value="%APPL_VIRTUAL_PATH%" />   

之後,我刪除了一切開始正常工作。

Here是一些與django.root變量相關的信息,適用於Apache。

1

我注意到zoofcgi有兩種工作模式

with django_settings_module

or with wsgi_app

由於我的項目需要第二(wsgi_app),我注意到這個問題並沒有通過設置變量不僅解決django.root

也就是說,第二種模式的環境變量配置中存在一個錯誤。所以我創建瞭解決這個bug的項目helicon-zoofcgi

現在沒有必要在django網址中輸入網站前綴,zoofcgi模塊已經在環境變量中解決了它。

我希望該項目對未來某個人有用。