我想在 Nginx 配置文件中使用' error_page' 指令时传递参数,如下所示。
我已经' err.html' 使用JavaScript处理响应状态代码。但是下面根本不起作用。
error_page
400 401 402 403 404 500 502 503 504 = /err.html?$status;
当我使用' error_page'时,是否有其他方法可以传递响应状态代码(或其他参数)指令?
答案 0 :(得分:1)
(我重写了这个答案)
问题是由于我对内部重定向和外部重定向的混淆造成的。以下效果很好。 (假设'err.php'正确处理查询字符串)
error_page 400 401 402 403 404 500 502 503 504 /err.php?$status;
如果我希望客户端JavaScript处理响应状态代码(通过查询字符串传递),我应该尝试另一种方式,如Satys所说。我可以找到一种方法。
error_page 400 402 403 404 500 502 503 504 @err;
location @err {
rewrite ^.*$ /err.html?$status redirect;
}
感谢您的建议,Satys。
答案 1 :(得分:0)
我认为这是一个错误的概念。如果出错,使用error_page,nginx不会返回url,而是执行内部重定向,并发送和备用响应。
为了实现这一目标,目前我可以想到两种方式,
multiple error_pages ,并对其进行预编码 javascript到那些页面。
error_page 404 err404.html;
error_page 403 err403.html;
...
这似乎有点冗长。
error_page 404 405 ... / custom_error $ status;
location ~ /custom_error(.*) {
add_header Error-Code $1;
try_files /err.html.html 404;
}
P.S。请检查语法错误,上面的代码未经过测试。