前几天写了一篇文章《WDCP v3网站开启伪静态及转换.htaccess为nginx伪静态文件conf的方法》,讲的是怎么将apache的伪静态文件转化为nginx的问题。
但是这样之后,有一个很有意思的情况,那就是一些错误地址,比如http://www.baishujun.com/dfasdfasdfas,跳转到首页,网站目录的伪静态规则没有处理,网站配置文件nginx.conf的 error_page 400 403 404 500 502 503 504 /404.php;
也没有处理。
经过无数次的调试和琢磨,找到了原因,记录一下。
原来nginx配置文件里面还有一个规则是处理这些文件的。
location / { #try_files $uri $uri/ /?$args; try_files $uri $uri/ 404; }
try_files的作用就是测试$uri是否存在,如果不存在就执行/?$args
,找了半天不知道这个args哪里设置,就直接修改为状态码了。把 try_files $uri $uri/ /?$args;
修改为 try_files $uri $uri/ 404;
这样,当路径中的文件不存在时就会返回404错误,然后把404错误的页面设置好,就ok了,不会直接跳转到首页了,如果想二级目录的错误也是这个页面的话,那么404的错误页可能需要设置完整路径http://www.baishujun.com/404.html
或者../404.html
。
mark一下,以免忘记了。