(我认为这个问题重复了Lighttpd 从 www.domain.com 重定向到 domain.com,但那个没有引起足够的重视并且太旧了)。
我正在尝试通过 lighttpd+FastCGI 部署应用程序并加密所有流量。如果我在 URL 中明确使用 HTTPS,效果会很好,但是当我尝试将 URL 从 HTTP 重定向到 HTTPS 时,应用程序脚本名称(在本例中为 index.py)会包含在 URL 中,因此https://somedomain.com/bleh我明白了 https://somedomain.com/index.py/bleh,这会触发“未找到”错误。
我尝试移动一些东西,但我不知道如何很好地进行重定向。这是我的 lighttpd.conf 的相关内容
$SERVER["socket"] == ":80" {
$HTTP["host"] =~ "(.*)" {
url.redirect = (
"^/(.*)" => "https://%1/$1"
)
}
}
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "certificate.pem"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
}
fastcgi.server = (
"index.py" => ((
"socket" => "/tmp/app.socket",
"bin-path" => "index.py",
"max-procs" => 1,
"bin-environment" => (
"REAL_SCRIPT_NAME" => ""
),
"check-local" => "disable"
))
)
url.rewrite-once = (
"^/favicon.ico$" => "/static/assets/favicon.ico",
"^/static/(.*)$" => "/static/$1",
"^/(.*)$" => "/index.py/$1"
)
答案1
重写发生在重定向之前。对于您来说,解决方案是将 fastcgi 和重写放入 ssl 套接字中,因为无论如何您只希望它用于 ssl。
请不要在 /tmp 中生成套接字,而是使用专用的目录,只有 lighttpd 才能在其中创建文件。