Nginx和try_flies无法正常工作

时间:2014-06-29 11:54:01

标签: nginx rewrite multiviews

我正在尝试模拟Multiviews,但我遇到了try_files的问题。一切都还可以,但我想重写所有未设置为/index.php的网址(但不包括404):

location ~ ^(/.+)/ {
   try_files $uri $uri/ $1.php?$args @extensionless-php /index.php;
}
location @extensionless-php {
   rewrite ^(.*)/ $1.php;
}

所有网址都会重新输入/index.php。如果我在第一个位置结束时删除/index.php,除了未管理的网址(我想要重新编写索引)之外,一切正常。任何的想法?谢谢

1 个答案:

答案 0 :(得分:0)

如您所说,您可以尝试从第一个位置删除/index.php。然后,为了在找不到php文件时将其重定向到/index.php,您可以在处理location个请求的.php中添加几行:

location ~ \.php$ {
    if (!-f $request_filename) {
        rewrite    .*    /index.php;
    }
    # your other directives such as fastcgi_pass 127.0.0.1:9000; etc.
}