nginx重写问题

时间:2010-11-09 00:55:37

标签: regex nginx rewrite

我在下面有一个简单的nginx重写规则:

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

它与http://mydomain.com/controller/action之类的网址一样正常,但是当请求的网址类似于:

    http://mydomain.com/index.php/controller/action 

它无法识别index.php是一个现有文件,在这种情况下不应该重写。

我该如何解决这个问题?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

你需要一个正则表达式,上面写着“任何不包含.php的字符串”,如下所示:

^((?!\.php).)*$

如果由于php文件不存在而导致错误,则您需要使用自定义404错误将用户重定向到其他位置。