在 Nginx 中配置 Zend Framework

May 11th, 2009 | Filed under PHP
1
2
3
4
5
6
7
location / {
    root   d:/public_html;
    index  index.php index.html index.htm;
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /myproject/public/index.php last;
    }
}

按照配置文件,我的项目地址是:http://localhost/myproject/public,项目是部署在子目录 /myproject/public 里面的,如果你把 document_root 直接设置为 /myproject/public,使用 http://localhost 来访问,那么上述配置删除掉 index.php 前面的目录部分,也就是 rewrite ^/(.*)$ index.php last;

Nginx 不支持 Apache 的 .htaccess 文件,所以需要在 Nginx 配置文件中编写重写规则。Apache 的绝大部分 RewriteRule 命令都可以不做修改的放到 Nginx 中直接使用。你只要把 RewriteRule 改成 rewrite,[L] 改成 last 之类的就可以了,具体可以看一下 Nginx 的 Rewrite 文档。

http://wiki.nginx.org/NginxHttpRewriteModule

题外话,Zend Framework 越来越强大,越来越复杂了,很多追求“简洁”的 Coder 们都已经开始信誓旦旦的说要放弃 ZF 。有点搞笑,这就好像我在说:飞机太快了,价钱太贵了,不适合我,还是自行车好啊!有些人对待问题的看法极端又片面,就好像看电视剧的时候,也总是要把人分为好人和坏人一样,他们的想法很单纯——我不喜欢 ZF,因为臃肿、复杂,所以它是垃圾。

Tags: , ,
  1. carson
    Dec 12th, 2009 at 00:45
    Reply | Quote | #1

    我也用zend framework开发项目,我是这样配置的:
    location / {
    root E:/vhost/SVN/localhost/public;
    index index.html index.htm index.php;
    if (!-e $request_filename) { rewrite ^/(.*) /index.php?$1; }
    }

    但,如果有其他url需要重写,而不想在 application.ini配置文件里加规则,直接在
    if (!-e $request_filename) { rewrite ^/(.*) /index.php?$1; }下加却不起作用。迷惑中。恳请指教。

Comments are closed.