Zend Framework on nginx

2022-08-30 23:50:49

我一直在研究的基于Zend Framework的网站现在正在迁移到其生产服务器。这个服务器原来是nginx(惊喜!当然,该网站无法正常工作,因为它是在Apache上开发的,并且依赖于htaccess文件。

我的问题是...有人对此有任何经验吗?关于如何将htaccess文件的功能转换为nginx.conf文件的任何想法?我正在研究这个,但我希望有人已经有这方面的经验。谢谢!

编辑:这是当前的htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]

答案 1
server {

 listen   80; ## listen for ipv4
 listen   [::]:80 default ipv6only=on; ## listen for ipv6

 server_name  localhost;

 access_log  /var/log/nginx/localhost.access.log;
 error_log  /var/log/nginx/localhost.error.log;

 root   /var/www/localhost/public;

 try_files $uri @php_index;

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #
 location @php_index {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_param  SCRIPT_FILENAME /var/www/localhost/index.php;
  include fastcgi_params;
 }
}

建议尽可能使用try_files。


答案 2

我知道这是一个非常古老的线程,但它可能会帮助一些人。

基本上,它将任何404错误重定向到索引.php,但如果文件存在(类型文件),它将设置正确的根目录。

我从头顶上做到了。它可能不会立即工作,您必须放置正确的路径和fastcgi配置。我还将所有内容放回索引.php因为它应该像这样工作Zend_Framework

error_page  404 = /index.php;

location / {
    if (-f $request_filename) {
        root   /var/www;
    }
}

location ~ \.php$ {
        fastcgi_pass   unix:/tmp/php.sock;
        fastcgi_index  index.php;

        fastcgi_param  SCRIPT_FILENAME     /var/www/index.php;
        include /etc/nginx/fastcgi_params;
}

推荐