我有一个django网站设置与lighttpd和ssl工作,但我似乎无法从http到https重定向工作。我的设置非常类似于:https://docs.djangoproject.com/en/dev/howto/deployment/fastcgi/#lighttpd-setup我在ubuntu上使用lighttpd / 1.4.26
基本上我的设置看起来像这样:
$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" )
}
}
问题是当我启用重定向时,我的网址会被重写为:
https://myhost.com/blah.fcgi/my/path/to/blah
在我真正想要的时候加入blah.fcgi部分:
https://myhost.com/my/path/to/blah
我不确定为什么重定向包含重写和/或如何防止它并实际执行正确的重定向?
非常感谢。
答案 0 :(得分:3)
我以同样的方式使用lighttpd,这是我如何进行类似的重定向:
url.redirect = (
"^(?:/[a-z]+\.fcgi)?(.*)$" => "https://%1$1"
)
这会从左侧的匹配中删除重写的脚本名称,因此它不会显示在重定向中。