使用try_files的nginx重写规则

时间:2012-04-18 17:00:27

标签: url-rewriting nginx

在这篇文章的底部是我当前的nginx重写规则,并且在大多数情况下它正在按预期工作。我似乎遇到的唯一问题是示例链接,例如example.com/?action=cmd,此操作正在处理为example.com/clientarea/?action=cmd

我正在寻找一种方式,当?调用符号,它会自动将其附加到example.com/index.php而不是/ clientarea /

location = / {
    rewrite ^ /clientarea/ permanent;
}

location ~ ^(.*)$ {
try_files $uri $uri/ /index.php?$1;
}

1 个答案:

答案 0 :(得分:1)

假设您有最新版本的Nginx 1.0.x(我认为),这应该可行:

location = / {
    if ($is_args = '?') {
        return 301 $scheme://$host/index.php$is_args$args;
    }
    rewrite ^ /clientarea/ permanent;
}

location ~ ^(.*)$ {
    try_files $uri $uri/ /index.php?$1;
}