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

前端之家收集整理的这篇文章主要介绍了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.
}

猜你在找的Nginx相关文章