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