将 .htaccess 转换为 nginx 重写

将 .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”变量
nginx:配置文件 /usr/local/nginx-1.8/conf/nginx.conf 测试失败

答案1

自动转换器,如这个可以给你一个很好的开始......

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

当然if是邪恶的,这就是为什么本手册用于转换 mod_rewrite 指令 提供了更好的选择

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

相关内容