如何将.htaccess转换为nginx等效物?

时间:2016-03-22 09:12:03

标签: apache .htaccess mod-rewrite nginx winginx

如何将.htaccess配置转换为nginx?

我的.htacess:

Options -MultiViews
RewriteEngine On
RewriteBase /mvc/public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

我试过这个:

nginx配置

location /mvc/public/ {
if (!-e $request_filename){
rewrite ^/mvc/public/(.+)$ /mvc/public/index.php?url=$1 [QSA,L];
}
}

但这不起作用! 有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

[QSA,L]不是nginx语法 - 有关详细信息,请参阅this document

location /mvc/public/ {
    if (!-e $request_filename) {
        rewrite ^/mvc/public/(.+)$ /mvc/public/index.php?url=$1 last;
    }
}

使用try_files而不是if

可以实现类似的行为
location /mvc/public/ {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/mvc/public/(.+)$ /mvc/public/index.php?url=$1 last;
}

有关详细信息,请参阅this document