2010-11-09 65 views
1

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

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

它工作正常使用URL像http://mydomain.com/controller/action,但是当所请求的URL是一样的东西:

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

未能认识到index.php是一个现有的文件,在这种情况下,重写不应该发生。

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

回答

0

你会希望有一个正则表达式,说,像这样“它不包含任何.PHP字符串”:

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

如果这导致错误,因为PHP文件不存在,你会需要使用自定义的404错误在其他地方重定向您的用户。