Nginx:隐藏.php扩展名,但请使用PATH_INFO

时间:2016-05-14 17:10:25

标签: nginx

使用Nginx,我想将.php文件随意添加到我的文档根目录中,让它们在没有扩展名的情况下工作。不仅如此,我希望这些随机的.php文件也可以在它们之后使用path_info。

因此,如果我添加文件/path/to/root/apple.php,我希望www.example.com/apple能够正常工作,以及www.example.com/apple/123www.example.com/apple/123/somethingwww.example.com/apple/123/something/something

我希望能够在整个地方一直添加这样的文件,而不必在Nginx配置中为每个文件添加显式的Location块。我想继续添加/path/to/root/orange.php/path/to/root/quince.php以及其他任何内容,我希望这些路径可以立即使用,不带.php扩展名,以及任意的path_info。

在Apache中,我可以Options MultiViews。在Nginx中,也许这还不可能,但如果是这样,我只想知道,所以我可以停止尝试解决这个问题。

1 个答案:

答案 0 :(得分:1)

常见的模式是查找静态文件,如果没有找到,则执行一些默认操作。该默认操作可能是提取URI的第一个元素并将其转换为.php。我做了一个假设,那就是www.example.com/apple/123/something/something,PHP文件始终是路径的第一个元素,在本例中是apple.php

root /path/to/root;

location / {
    try_files $uri $uri/ @php;
}

location ~ \.php$ {
    try_files $uri =404;
    ...
}

location @php {
    rewrite ^/([^/]+)(/|$) /$1.php last;
}

我还没有解决路径信息问题。 PHP脚本可以通过多种方式访问​​路径信息。有些人会查看原来的REQUEST_URI,在这种情况下你只需要做以上的事情。