首页 > 清河洛 > nginx中的error_page指令和rewrite指令
2019
07-08

nginx中的error_page指令和rewrite指令

error_page指令

error_page指令的作用是当发生错误的时候能够显示一个预定义的uri的内容

指令语法:error_page codes [=code] err_file;

error_page 502 503 /50x.html;
    当访问出现502、503的时候就能返回50x.html中的内容。

error_page 502 503 =200 /50x.html;
    自定义返回状态码,用户访问产生502 、503的时候给用户的返回状态是200,内容是50x.html。

error_page 404 = /error.php;
    指定的是一个动态脚本,如果脚本没有自定义返回状态码,则正常输出,如果该脚本也定义了返回状态码,中间不加等号该语句无法执行,即返回404状态码和默认404页面
    如果中间添加了等号,返回给用户脚本中定义的状态码,如果自定义状态码和指定状态码相同则状态码正常返回但内容为默认页面,如果自定义状态码和指定状态码不同则状态码和内容都正常返回
    上例中如果error也返回了404状态码,则返回404状态码和默认404页面,如果error.php返回别的状态码,则状态码和页面内容都可以正常返回

使用代理等复杂操作可以自定义一个location
    error_page 502 503 @fetch;
    location @fetch{
        ......
    }

error_page 404 502 /error.php?$status;
    在error.php中使用$_SERVER["QUERY_STRING"]获取状态码进而动态返回内容

rewrite指令

rewrite是实现URL重定向的重要指令,根据regex(正则表达式)来匹配内容跳转到replacement,结尾是flag标记

指令语法:rewrite regex replacement[flag];

应用位置:server、location、if

flag参数:

    last 如果没有匹配到会继续向下匹配,如果匹配完成会继续向下匹配新的location URI规则
    break 如果没有匹配到不再向下匹配,直接返回结果404,如果匹配完成不会去匹配下面的location
    redirect 返回302临时重定向
    permanent 返回301永久重定向

两个使用示例:

rewrite ^(.*)$ https://$server_name$1 permanent;

if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php$1;
}
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。