2009-12-10 116 views
0

我有一個靜態內容的網站,所有在Apache上運行的訪問。作爲附件,有一個會員網站在django上運行。我沒有任何問題「分享」我的.css文件,並且讓兩面在外觀上相同,但我似乎無法理解的是讓我的django網站成爲django密碼保護(另外需要注意的是,所有會員資料,從登錄前進到443)。靜態網站apache和動態/成員網站django

我能爲所有的網頁,我試圖使用mod_rewrite如下:

<Directory /Library/Webserver/Documents> 
. 
. 
. 
</Directory> 

WSGIScriptAlias /members /usr/local/django/mysite/apache/django.wsgi 


<Directory /members> 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://{HTTP_HOST}%{REQUEST_URI} [L] 
. 
. 
</Directory> 

我試圖在上面的「/成員位置一千個不同項目的每一個,似乎什麼都不打(是的,包括RewriteEngine On - 我可以看到調試出來)。

回答

0

嘗試:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

你應該重定向回請求對,不一定是實際的Web服務器主機做出相同的主機。

我也不相信mod_rewrite中有一個%{URI}變量。假設使用%{REQUEST_URI}。


編輯1

按照意見,應該是:

<Location /members> 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://{HTTP_HOST}%{REQUEST_URI} [L] 
. 
. 
</Location> 

或:

<Directory /usr/local/django/mysite/apache> 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://{HTTP_HOST}%{REQUEST_URI} [L] 
. 
. 
</Directory> 

所以,位置是URL和目錄是文件系統的目錄。

+0

對不起,我所做的一部分是從記憶中,沒有機器在我面前。這不是重寫/ rewriterule,讓我難住,它讓他們開火。我已將它們放置在每個可以想象的配置中,並且它們似乎從未擊中過。 (小澄清,如果我用普通目錄做這個,它工作正常,似乎是我無法確定正確的DJANGO 結構放置上述行。) – KevinDTimm 2009-12-10 21:56:10

+0

這是因爲你應該使用'位置'而不是'目錄',如果參數是一個URL。如果想要使用'Directory'應該是WSGI腳本文件的位置,但是不能將其限制爲整個站點的子URL。所以,使用'位置'。請閱讀關於「位置」和「目錄」之間差異的Apache文檔。 – 2009-12-11 03:31:57

+0

格雷厄姆,萬分感謝 - 給我一點點閱讀,然後回來,並標記你接受的答案。你的聲譽在你之前,所以我很確定這將是一個簡短的搜索。 – KevinDTimm 2009-12-11 08:07:21