我正在尝试使用 Lighttpd 配置文件中的重定向强制在我的网站的某些页面上使用 SSL 和非 SSL。我已将重定向到 SSL 运行正常:
$HTTP["host"] == "www.site.com:80" {
url.redirect = ( "(login|register/payment|resetpassword|account/password)" => "https://www.site.com/$1" )
}
现在我试图反过来做,但我无法让模式正确命中(在 apache 下使用 .htaccess 有一个副本可以正常工作):
$HTTP["host"] == "www.site.com:443" {
url.redirect = ( "!(login|register/payment|resetpassword|account/password|images|css|javascript|minify/minify.php|states)" => "http://www.site.com/$1" )
}
我尝试过多种组合,但通常最终都会陷入无限重定向循环,因为第二个在 SSL 端口上匹配所有 URL,或者根本不触发。有什么建议吗?
答案1
尝试使用 (?!: 而不是 !( 来进行否定匹配。
url.redirect = ( "(?!:login|register/payment|resetpassword|account/password|images|css|javascript|minify/minify.php|states)" => "http://www.site.com/$1" )