我有一个重定向规则,所以每个请求之前都必须有www.
,问题是如果有人通过https://
连接,他们会重定向到http://
,因为我不知道应该使用什么命令来区分它们。这就是规则:
var.mdomain = "mydomain.com"
var.mdomainregexredir = "^mydomain.com$"
$HTTP["host"] =~ var.mdomainregexredir {
server_name = var.mdomain
url.redirect = ( "^/(.*)" => "http://www." + var.mdomain + "/$1" )
}
如果可能的话,我想知道是否有一种方法可以只使用一个重定向规则,我的意思是,我不喜欢添加两个url.redirect
,一个在http
中,另一个在https
中,我希望它是这样的(简化):
url.redirect = ( "^/(.*)" => (isHttps?"https":"http") + "://www." + var.mdomain + "/$1" )
您需要的是:
$HTTP["host"] =~ var.mdomainregexredir {
$HTTP["scheme"] =~ ".*" { # catch http and https
# %0 references the above matched pattern (http or https)
# also changed to just catch the whole path and redirect using it with $0
url.redirect = ( ".*" => "%0://www.varmdomain$0" )
}
}
除非你有令人信服的理由,否则我会将所有内容重定向到https。你也可以同时进行https和www重定向。