将.htaccess转换为nginx重写

我一直在尝试将重写规则从.htaccess转换为nginx重写。

原始文件如下所示:

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php?/$0 [PT,L] 

转换

 if (!-f $request_filename){ set $rule_0 1$rule_0; } if (!-d $request_filename){ set $rule_0 2$rule_0; } if ($rule_0 = "21"){ rewrite /.* /index.php?/$0 last; } 

但是当我重新启动nginx时,我得到:

nginx:[emerg]未知的“0”variables
nginx:configuration文件/usr/local/nginx-1.8/conf/nginx.conftesting失败

这样的自动转换器可以给你一个不错的开始…

 # nginx configuration location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?/$0 break; } } 

当然if是邪恶的,这就是为什么这个手册来转换mod_rewrite指令给出一个更好的select

 location / { try_files $uri $uri/ /index.php?$args; }