2011-11-30 62 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

我不完全确定,我有和你一样的假设。 –