Passez à try_files

Pour rediriger les requêtes qui pointent sur un fichier ou un répertoire qui n'existe pas vers /index.php, avec Nginx et Zend Framework on utilise traditionnellement :

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

Mais ce n'est pas optimal car il est recommandé d'éviter if. On peut le remplacer par try_files :

location / {
  try_files $uri $uri/ /index.php?$args;
}

Mise à jour du 2/03/12 : il faut ajouter ?$args sinon les paramètres GET ne sont pas transmis à PHP.

On teste d'abord si la requête correspond à un fichier, puis à un répertoire (notez le / derrière $uri). Si il n'y a pas de fichier ou de répertoire correspondant, on redirige vers /index.php.

Vous pouvez également consulter la page suivante pour en savoir plus sur Nginx + Zend Framework.

Ajouter un commentaire