配置redirect
本章介绍如何配置HTTP重定向(redirect)。该功能将对收到的请求返回重定向响应码,指示客户端跳转到新的URL。
开启redirect
在conf/bfe.conf中,打开该模块
Modules = mod_redirect
模块配置
模块配置在目录conf/mod_redirect/中,包含两个文件:
$ ls
mod_redirect.conf redirect.data
mod_redirect.conf为模块基础配置文件,指向重定向规则文件,通常无需修改。
$ cat mod_redirect.conf
[basic]
DataPath = mod_redirect/redirect.data
rewrite.data 包含重定向规则,可动态加载。安装包中的示例中的配置文件如下:
{
"Version": "1",
"Config": {
"example_product": [
{
"Cond": "req_path_prefix_in(\"/redirect\", false)",
"Actions": [
{
"Cmd": "URL_SET",
"Params": ["https://example.org"]
}
],
"Status": 301
}
]
}
}
上述配置为产品线example_product中增加了一个规则:对满足条件"Cond"(请求路径的前缀为“/redirect”)的请求,执行"Actions"动作(重定向到https://example.org),返回HTTP响应码为301。
重定向动作
"Actions"中的"Cmd"指示了如何设置重定向中的URL。
URL_SET
重定向请求到指定URL,参数为重定向的URL。
示例:
{
"Cmd": "URL_SET",
"Params": ["http://www.example.com/more"]
}
结果: | | | |-|-| |请求 | http://www.example.com/unknown | |重定向到 | http://www.example.com/more |
URL_FROM_QUERY
将query中的某个key的值设置为重定向地址。参数为query中该key的名字。
示例:
{
"Cmd": "URL_FROM_QUERY",
"Params": ["url"]
}
结果: | | | |-|-| |请求 | http://www.example.com/redirect?url=http://news.example.com | |重定向到 | http://news.example.com |
URL_PREFIX_ADD
设置重定向URL为当前URL加上特定前缀。参数为需要增加的前缀。
示例:
{
"Cmd": "URL_PREFIX_ADD",
"Params": ["/v1"]
}
结果: | | | |-|-| |请求 | http://www.example.com/test.html | |重定向到 | http://www.example.com/v1/test.html |
SCHEME_SET
设置重定向URL的scheme为HTTP或者HTTPS。参数指定为http或者https。
示例:
{
"Cmd": "SCHEME_SET",
"Params": ["https"]
}
结果: | | | |-|-| |请求 | http://www.example.com/index.html | |重定向到 | https://www.example.com/index.html |