apache-2.2 – 使用Nginx的Apache风格的多视图

对于我正在运行的一些非CMS网站,我有兴趣从Apache / mod_php切换到Nginx.有问题的网站要么是完全静态的HTML文件,要么是简单的PHP,但他们共同的一点是我正在使用Apache的mod_negotiation来提供它们而不需要文件扩展名.我不关心实际的内容谈判;我正在使用它,所以我不必在我的URL中使用文件扩展名.

例如,/ info/contact.php中的文件是通过/ info / contact的URL访问的

实际文件是该位置的.php文件,但我不在URL中使用该扩展名.这为我提供了更短,更清晰的URL,也没有向用户公开实质上无意义的实现细节.在Apache中,所有这些都是启用mod_negotiation并将MultiViews添加到站点的选项中.在Nginx中我收集到的我会以某种方式重写,但是对Nginx不熟悉,我不确定如何做到这一点.

这些网站目前在从Nginx到Apache的代理工作正常,但我想尝试使用Nginx / fastcgi来运行它们.只要我使用扩展,它们就可以正常工作,因此fastcgi方面工作得很好.我现在关心的是删除这些扩展.

重要的是要记住,在子目录的情况下,文件名并不总是在URL中.那是,

/ foo / bar应该查找/foo/bar.php或/foo/bar/index.php

/ foo /应该寻找/foo/index.php

有没有一种简单的方法来实现这一点与Nginx或我应该坚持代理到Apache?

最佳答案
你不需要任何繁琐的重写,try_files完美地适用于此.它基本上只有一条线.

server {
    server_name foo.com;
    root /your/root/path;
    index index.php;

    location /
        try_files $uri.php $uri/ /notfound.html;
    }

    # Your standard PHP location and everything else is still required here.
}

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。