2010-11-09 7 views
1

J'ai une règle simple réécriture nginx ci-dessous:nginx rewrite question

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

Il fonctionne très bien avec urls' comme http://mydomain.com/controller/action, mais lorsque l'URL est quelque chose comme:

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

il n'a pas reconnaître que index.php est un fichier existant, auquel cas la réécriture ne devrait pas avoir lieu.

Comment puis-je résoudre ce problème? Merci de votre aide.

Répondre

0

Vous voulez une expression régulière qui dit « toute chaîne qui ne contient pas .php », comme ceci:

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

Si cela provoque des erreurs car le fichier php n'existe pas, vous besoin d'utiliser une erreur 404 personnalisée pour rediriger votre utilisateur ailleurs.