我有一个安装了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有什么区别?
我用过这个:
$HTTP["scheme"] == "https" { $HTTP["host"] =~ "example.com" { url.redirect = ( "^/(.*)" => "http://www.example.com/$1" ) } }
但要小心,有些浏览器记住,一个网站使用https 。 所以无论发送Web服务器的redirect如何,都会尝试访问https版本。 我已经尝试过这种情况,Firefox / Chrome告诉我,我的网站进入redirect循环。 但是当我在https上curl我的网站时,我得到了一个301到http 。 在http 200上。
所以很难testing…
对于第二个问题,它在文档中 :
请注意,url.redirect目标中的“%1”引用了条件正则expression式(。*)中的带括号的子expression式。 它不一定具有“%1”在evhost.path-pattern(这意味着“顶级域名”)的含义。 如果在正则expression式条件中指定了url.redirect,则%条件将被条件正则expression式中的相应组replace。 %1用第一个子expression式replace,%2用第二个replace,等等。%0被replace为与正则expression式匹配的整个子string。 请参阅上面和下面的示例使用%模式。