在 lighttpd 中将 HTTPS 请求重定向到 http

在 lighttpd 中将 HTTPS 请求重定向到 http

我正在运行一个安装了 SSL 证书的 lighttpd 服务器。出于某些原因,我想将所有 https://www. 请求转发到 http://www.

我的lighttpd代码如下:

$SERVER["socket"] == ":443"
{
   ssl.engine = "enable"
   ssl.pemfile = "/path/to/pem/file"
   ssl.ca-file = "/path/to/ca/file"
   HTTP["host"] =~ "^www\.(.*)$" {
       url.redirect = ("^/(.*)" => "http://www.%1$1")
   }
}

您能指出这里的问题吗?另外,%1 和 $1 之间有什么区别?

答案1

我用过这个:

$HTTP["scheme"] == "https" {
        $HTTP["host"] =~ "example.com" {
                url.redirect = ( "^/(.*)" => "http://www.example.com/$1" )
        }
}

但要小心,有些浏览器会记住网站使用https。因此,无论向网络服务器发送什么重定向,它都会始终尝试访问 版本https。我试过这种情况,Firefox / Chrome 告诉我我的网站进入了无限重定向循环。但是当我在 上滚动我的网站时https,我得到了 301 到http。然后是http200。

所以测试起来很困难...

对于你的第二个问题,在文档中

请注意,url.redirect 目标中的“%1”指的是条件正则表达式 (.*) 中的括号子表达式。它不一定具有“%1”在 evhost.path-pattern 中的含义(其中它表示“顶级域”)。如果在正则表达式条件中指定了 url.redirect,则 % 模式将被条件正则表达式中的相应组替换。%1 将被替换为第一个子表达式,%2 将被替换为第二个子表达式,等等。%0 将被替换为与正则表达式匹配的整个子字符串。有关使用 % 模式的示例,请参见上文和下文。

相关内容