Nginx在深层目录中模拟多视图

时间:2014-06-27 16:53:53

标签: nginx multiviews

我是nginx的新手,我正在尝试配置nginx以使用url中第一个目录的名称将深层目录重写为php。例如:

http://domain.com/news/search/band/ -> news.php
http://domain.com/article/blue/300/?arg=10 -> article.php?arg=10
http://domain.com/xxx/yyy/zzz/ -> xxx.php

我尝试了一些正则表达式并使用:

try_files $uri $uri/ @extensionless-php /index.php?$args =404;

但我没有成功;有人能帮助我吗?谢谢

1 个答案:

答案 0 :(得分:0)

回复自己:

许多apache安装都启用了多视图。您可以使用try_files指令再次执行此操作:

location ~ ^(/.+)/ {
    try_files $uri $1?$args $1.php?$args;
}

虽然它并没有完全按照Apache中的Multiviews做什么,(比如可以省略文件扩展名),但在PHP配置中,它需要上述行为的9倍,让PHP文件处理所有请求包含文件名和附加的斜杠。