Nginx règle de réécriture pour CodeIgniter

Voici la règle en anglais:

Toute requête HTTP autres que celles pour index.php, les actifs dossier, le dossier des fichiers et robots.txt est traitée comme une demande de votre index.php fichier.

J'ai un .htaccess fichier qui fonctionne correctement sur le serveur Apache:

RewriteCond $1 !^(index\.php|assets|files|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

Certains des résultats corrects pour cette règle:

example.com = example.com/index.php

example.com/index.php/welcome = example.com/welcome

example.com/assets/css/main.css != example.com/index.php/assets/css/main.css

J'ai essayé quelques outils pour convertir htaccess règle de nginx règle, mais tous ne l'étaient pas.

Via http://winginx.com/htaccess (manque les règles d'exception pour les actifs de dossier...):

location / { rewrite ^(.*)$ /index.php/$1 break; }

Via http://www.anilcetin.com/convert-apache-htaccess-to-nginx/ (erreur de 1 $de valeur):

if ($1 !~ "^(index.php|assets|files|robots.txt)"){
    set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
    rewrite ^/(.*)$ /index.php/$1 last;
}

Comment puis-je résoudre ce problème? Il est vraiment difficile de déboguer la règle.

Voici ma config nginx jusqu'à présent:

server {
    listen       80;
    server_name  www.example.com example.com;

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

    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
        include        fastcgi_params;
    }

    location ~ /\.ht {
        deny  all;
    }
}
Quel est votre chemin de la racine et le chemin d'accès complet à votre codeigniter répertoire?

OriginalL'auteur Letomkov | 2013-10-13