如何在nginx中有条件地显示错误页面?



我如何配置nginx返回error_page,如果URI不包含ajax,但如果它包含ajax不发送错误页面,只是返回响应?类似于以下内容,但我不知道如何访问$status。我想对所有4xx或5xx

的状态都这样做本质上,我希望能够在出现AJAX请求错误和请求无法呈现HTML时出现错误页面时接收JSON响应。

# If the location contains ajax
location ~ ajax {
# Return the error status code
return $status;
}
# Location did not contain ajax so send an error page
error_page $status error.html;

谢谢!

原来我认为nginx指令是错误的。我把它想象成一种编程语言,就好像非ajax响应的error_page会在包含ajax的uri之前被求值。相反,将使用位置块中为匹配正则表达式的uri定义的error_page指令。这最终工作完美。

# All pages error page
error_page 404 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 500 501 502 503 504 505 error.html;
location ~ ajax {
# Error page for URI containing ajax
error_page 500 501 502 503 504 505 error.html;
}

相关内容

最新更新