2010-11-09 88 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錯誤在其他地方重定向您的用戶。