yaf 在apache下write后可以正常路由,在nginx下write后路由异常的问题

为重生而死 发布于 2016/01/09 17:48
阅读 394
收藏 0

@Laruence 您好

鸟哥您好,有一个问题想和您请教下

我在apache下配置了write规则,可以正常路由到controller,但是我在nginx下配置了write后虽然把请求write到了入口的index.php文件,不过yaf中的路由异常,不管什么url都只会路由到controller下的index.php中的indexAction这个方法。

php 版本 5.3

yaf版本2.3.5

nginx版本0.8

服务器centos 数据库mysql

nginx的url重写用了try_files和write两种方法 

 try_files $uri $uri/ /public/index.php$is_args$args;

if (!-e $request_filename) {
     rewrite ^/(.*) /public/index.php?$1 last;
}

这两种都会路由到ontroller下的index.php中的indexAction这个方法。

if (!-e $request_filename) {
     rewrite ^/(.*) /public/index.php/$1 last;
}

这种会404,找不到文件“项目目录/public/index.php/{uri}”   ps:{uri}为域名后的路径

以下是各种log文件

nginx的errorlog为空,什么都没有

php-fpm的errorlog为空,什么都没有

恳请赐教!多谢!

加载中
0
为重生而死

@Laruence 问题已经解决了, 感谢@voov@karsonzhang 两位的回答。

问题出在了nginx的配置上,fastcgi_param   PATH_INFO               $fastcgi_path_info,

是这个配置导致了yaf无法正常路由,还没有继续研究具体原因,希望能帮到遇到类似问题的朋友。

0
voov
voov

domain/module/controller/action

这种方式访问下url如何?

voov
voov
回复 @为重生而死 : 来晚了。。 找到问题原因就好
为重生而死
你用的是nginx下的yaf框架吗,有没有出现过路由的问题?
为重生而死
恩,我就是用这种方式访问的,这种方式和去掉module(domain/controller/action)yaf都是路由到了默认的index/index下
0
为重生而死
@Laruence 例如 “www.mylocalhost.com/admin/index/index”经过nginx把请求重定向后,我在默认的controller中的indexAction中打印了一下$_SERVER['REQUEST_URI'] 可以看到值为“admin/index/index”
0
karsonzhang
karsonzhang
location / {
    root   /your/site/path;
    index  index.php index.html index.htm;
    if (!-e $request_filename){
        rewrite ^/(.*)$ /index.php/$1 last;
    }
}

我的站点使用的YAF+NGINX构建的,以上是配置信息,PATH_INFO使用正常

为重生而死
感谢你的回复,我重新按照手册上的例子做了一遍,发现例子是可以的。但是有一个疑问,就是nginx的write语句, 如果是 rewrite ^/(.*) /index.php/$1 last; 这样的话就会404 如果是rewrite ^/(.*) /index.php?$1 last; 这样的话是可以的。 区别在于$1前的符号,一个是/一个是?。
返回顶部
顶部