2011-11-30 63 views
2

我有一個django站點設置與lighttpd和ssl工作,但我似乎無法得到重定向工作從http到https。我的設置是非常相似的:https://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/#lighttpd-setup和我使用的lighttpd/1.4.26在Ubuntufcgi,ssl和django,將HTTP重定向到HTTPS

基本上我的設置看起來是這樣的:

$HTTP["host"] =~ "myhost.com" { 
server.document-root = "/home/myvenv/blah" 
fastcgi.server = ( 
    "/blah.fcgi" => (
    ( 
     "host" => "127.0.0.1", 
     "port" => 16666, 
     "check-local" => "disable", 
     "max-procs" => 4, 
     "min-procs" => 4, 
    ) 
) 
) 
    url.rewrite-once = ( 
    "^(/favicon.ico.*)$" => "/$1", 
    "^(/admin_media.*)$" => "/$1", 
    "^(/media.*)$" => "/$1", 
    "^(/.*)$" => "/blah.fcgi$1", 
) 

expire.url = ( 
    "/favicon.ico" => "access 1 seconds", 
    "/admin_media" => "access 1 seconds", 
"/media" => "access 1 seconds", 
) 

} 

我想添加這個做我的HTTP到HTTPS重定向:

$SERVER["socket"] == ":80" { 
    $HTTP["host"] =~ "(.*)" { 
    url.redirect = ("^/(.*)" => "https://%1/$1") 
    } 
} 

問題是,當我啓用重定向,我的URL中獲取改寫,如:

https://myhost.com/blah.fcgi/my/path/to/blah

投入時,我真的只是想blah.fcgi部分:

https://myhost.com/my/path/to/blah

我不知道爲什麼重定向包括重寫和/或如何防止它實際上做了正確的重定向?

非常感謝。

回答

3

我用同樣的方式lighttpd的,這裏是我做了類似的重定向:

url.redirect = (
    "^(?:/[a-z]+\.fcgi)?(.*)$" => "https://%1$1" 
) 

這從比賽在左側的改寫腳本名稱,所以它不顯示在重定向。

+0

哦,呃,那肯定有效。 Thx刺激我的大腦:) – jmat

+0

任何想法爲什麼發生這種情況?我假設這是因爲mod_rewrite必須在重定向之前發生? – jmat

+0

我不完全確定,我有和你一樣的假設。 –