首页 > nginx > nginx中的try_files指令解释

nginx中的try_files指令解释

2012年10月15日 发表评论 阅读评论

try_files 指令的介绍比较让人摸不着头脑,经网上一番总结查看,try_files最核心的功能是可以替代rewrite。

try_files

语法: try_files file ... uri 或 try_files file ... = code

默认值: 无

作用域: server location

按顺序检查参数列出的文件是否存在,返回第一个找到的文件。结尾有斜线的  $uri/ 表示文件夹。如果所有的文件都找不到,会发生一个内部重定向到最后一个参数。

只有最后一个参数可以引起内部重定向,之前的参数只能设置为文件或文件夹。

最后一个参数是前面列出的文件或文件夹都不存在时的兜底回调,如果这个路径不存在,将会返回500错误。

最后一个参数也可以是命名的location。与rewrite指令不同,如果回调URI不是命名的location那么$args不会自动传递,如果你想保留$args,必须明确声明参数。

 

实例分析

它将检测$document_root/app/cache/index.php,$document_root/app/cache/index.html$document_root$uri 是否存在,如果都不存在则内部重定向到@fallback 。

也可以使用一个文件或者状态码 (=404)作为最后一个参数,如果是最后一个参数是文件,那么这个文件必须存在。

除最后一个参数外 try_files 不会产生内部重定向。

 

nginx不解析PHP文件,直接返回php代码文本的原因

因为这个指令设置内部文件指向到 $document_root/cache.php,并且这个文件存在,nginx会直接返回文件内容。 只有最后一个参数才会内部重定向,然后继续执行location段其它指令处理php。

(如果加上index指令可以解析PHP是因为index会触发一个内部重定向)

 

 

分类: nginx 标签: ,
  1. yuan
    2016年7月18日18:57 | #2

    可以吧,把host换成想访问的主机就可以了把

  2. 666
    2016年5月18日16:38 | #3

    666

  3. 2015年4月30日15:50 | #4

    已经明白一些了。谢谢分享。

  4. 2015年4月10日15:01 | #5

    内部重定向指的是本机吗 能不能重定向到远端主机?

  5. 有课
    2015年2月21日19:27 | #6

    好像还是没太明白

  1. 本文目前尚无任何 trackbacks 和 pingbacks.