mod_redirect
mod_redirect 通过发送 HTTP 状态码 301 及 Location 头部来重定向客户端
它支持匹配正则表达式,并支持使用捕获的子字符串以及其他占位符进行替换。
redirect (操作)
重定向客户端
redirect rule;
- 规则
- 一个简单的目标字符串,或一个规则(将正则表达式映射到目标字符串),或一个规则列表。
- 目标字符串是一个模式。
- 正则表达式用于匹配请求路径(始终以“/”开头!)
- 如果给定规则列表,重定向将在第一次匹配时停止。
- 默认情况下,目标字符串被解释为绝对 URI;如果它以“?”开头,它将替换查询字符串;如果以“/”开头,它将替换当前路径;如果以“./”开头,它将相对于路径中的当前“目录”进行解释。
示例:始终重定向 (HTTP 到 HTTPS)
setup {
module_load "mod_redirect";
}
if request.scheme == "http" {
if request.query == "" {
redirect "https://%{request.host}%{enc:request.path}";
} else {
redirect "https://%{request.host}%{enc:request.path}?%{request.query}";
}
}
示例:始终重定向 (添加 www 前缀)
setup {
module_load "mod_redirect";
}
if request.host !~ "^www\.(.*)$" {
if request.query == "" {
redirect "http://www.%{request.host}%{enc:request.path}";
} else {
redirect "http://www.%{request.host}%{enc:request.path}?%{request.query}";
}
}
示例:如果匹配则重定向
setup {
module_load "mod_redirect";
}
redirect "^/old_url$" => "http://new.example.tld/url"
示例
重定向所有非 www. 请求。例如:foo.tld/bar?x=y 到 www.foo.tld/bar?x=y
if request.host !~ "^www\.(.*)$" {
redirect "." => "http://www.%1/$0?%{request.query}";
}
redirect.debug (选项)
启用调试输出
redirect.debug value;
默认值:false