将Apache重写条件转换为Nginx

时间:2014-09-16 10:32:58

标签: .htaccess mod-rewrite nginx url-rewriting

我花了最后一个半小时试图让以下重写规则在Nginx中正常工作,但我所做的一切都无法正常工作!它总是以无限重定向循环或404结束。

最初的.htaccess是这样的:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(js|ico|txt|gif|jpg|png|css|php)
RewriteCond %{REQUEST_URI} !=/server-status
RewriteRule ^(.*)$ index.php/$1/

AcceptPathInfo On

我已经设置了正确的FastCGI路径信息拆分参数(fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;),但我无法让重定向规则/ try_files规则正常工作!

1 个答案:

答案 0 :(得分:0)

看起来你需要经典的index.php处理程序,但这只是config的一部分,也许你需要更多的配置:

server {
...

  location /
  {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?$1 last;
    }
  }

  location ~* \.(js|ico|txt|gif|jpg|png|css)$ {
    expires 31d;
    access_log off;
  }

  location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass backend;
  }
...
}