全局改写规则
应用之间会有很多相同的页面规则,除了使用 全局自定义动作
外,我们还可以使用 全局改写规则
来实现。
全局改写规则和全局自定义动作不同,后者需要在应用中添加,并且走发布流程才会生效。 而前者对于应用是无感知的,也不用走发布流程。也就是增加了一个改写规则,就直接对所有的应用生效了。 所以使用全局改写规则的时候,需要格外小心一些。
下面我们先新建一个没有任何改写规则的应用:
然后我们不加改写规则,直接访问:
$ curl -i -H 'host: rewrite-rule-test.com' 52.43.45.19/404.html
HTTP/1.1 404 Not Found
Server: openresty+
Date: Mon, 21 Jan 2019 15:59:57 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>openresty</center>
</body>
</html>
会返回 404 的错误信息,这是预料之内的。
然后我们去 全局设置
中的 全局改写规则
页面,新增一个规则。
在全局改写规则页面中,会列出已经存在的全局规则。
我们点击 新规则
按钮,来新建一个。
这个页面和应用的 页面规则
类似,都包含开启条件和动作两个部分。
下面是一个简单的例子,无条件的返回一个字符串。
改写规则的下拉列表里面有很多动作,我们从中选择“响应动作”类别中的 输出响应体。
点击后下角的 创建
按钮,一个全局改写规则就设置成功了。
这时候这个全局改写规则,不用走发布流程,它已经对上面新增的应用生效了。 我们访问看看返回值:
$ curl -i -H 'host: rewrite-rule-test.com' 52.43.45.19/404.html
HTTP/1.1 200 OK
Date: Tue, 14 Nov 2023 10:51:34 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Server: OpenResty Edge
Req-ID: 00002a000e80584eb9b0b942
<!doctype html>
<html>
<head>
<title>Response</title>
</head>
<body>
</body>
</html>
这次没有返回 404 的错误信息,而是全局改写规则设置的相应体。
我们再把这个全局改写规则删掉,试试看。
再次访问,又返回了 404:
$ curl -i -H 'host: rewrite-rule-test.com' 52.43.45.19/404.html
HTTP/1.1 404 Not Found
Server: openresty+
Date: Mon, 21 Jan 2019 16:00:11 GMT
Content-Type: text/html
Content-Length: 166
Connection: keep-alive
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>openresty</center>
</body>
</html>