使用Nginx,我想将.php文件随意添加到我的文档根目录中,让它们在没有扩展名的情况下工作。不仅如此,我希望这些随机的.php文件也可以在它们之后使用path_info。
因此,如果我添加文件/path/to/root/apple.php
,我希望www.example.com/apple
能够正常工作,以及www.example.com/apple/123
或www.example.com/apple/123/something
或www.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中,也许这还不可能,但如果是这样,我只想知道,所以我可以停止尝试解决这个问题。
答案 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,在这种情况下你只需要做以上的事情。