Redirect
如何在不破壞 FastCGI 應用程序的情況下重定向 URL?
(我認為這個問題是Lighttpd 從 www.domain.com 重定向到 domain.com的副本,但是這個問題沒有得到足夠的關注,而且它太舊了)。
我正在嘗試通過 lighttpd+FastCGI 部署應用程序並加密所有流量。如果我在 URL 中明確使用 HTTPS,它會很好用,但是一旦我嘗試從 HTTP 重定向到 HTTPS,URL 就會包含應用腳本名稱(在本例中為 index.py),而不是https:/ /somedomain.com/bleh我得到 https://somedomain.com/index.py/bleh,這會觸發 Not Found 錯誤。
我嘗試移動一些東西,但我不知道如何做好重定向。這是我的 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" )
重寫發生在重定向之前。在您的情況下,解決方案是將 fastcgi 和 rewrite 放在 ssl 套接字中,因為無論如何您只希望它用於 ssl。
請不要在 /tmp 中生成套接字,使用專門用於此的目錄,只有 lighttpd 可以創建文件。