YAF手册中对Nginx的重写规则:
server { listen ****; server_name domain.com; root document_root; index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/(.*) /index.php/$1 last; } }
按照这个规则加入到nginx的配置文件后会发现,访问默认的控制器时,是没问题的(即,直接输入域名或者ip访问的默认路径);但是如果访问其他的控制器(www.xxxx.com/index/test),就开始出现找不到页面的404错误。这种情况的出现多是页面真的不存在,但是重写规则错误也是主要的原因。
在Nginx下YAF正确的重写规则是:
将
rewrite ^/(.*) /index.php/$1 last; 这行中的index.php/$1 替换为 index.php?$1 ,即把 / 换成 ?
然后重启Nginx, nginx -t && nginx -s reload 即可。