nginx CSS break après ajout de la réécriture de $ à $ .php

Si je vais append la ligne suivante à ma configuration nginx, cela cassera mon site Web et fonctionnera sans CSS:

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|svg|xml)$ { access_log off; expires 30d; } location / { try_files $uri $uri/ $uri.php =404; rewrite ^/(.+)$ /$1.php last; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } 

si je commente la condition de réécriture, tout fonctionnera bien.

Que puis-je faire pour faire fonctionner les deux choses, la condition de réécriture et la feuille de style css?

Edit: J’ai eu un nouveau problème, maintenant tous les fichiers comme test.php fonctionnent bien sans écrire .php , mais les dossiers comme les users/ ne fonctionneront pas, je me rveive toujours File not found , normalement il devrait prendre l’ index.php ou l’ index.html du dossier, comment puis-je fournir les deux fonctions? append .php aux fichiers et utiliser inde.php/html partir du dossier?

Vous pouvez séparer les fichiers try_files et réécrire en remplaçant l’ location / bloc par les deux blocs d’emplacement suivants:

 location / { try_files $uri $uri/ @rewriterules; } location @rewriterules { rewrite ^/(.+)$ /$1.php last; } 

De cette façon, try_files passe en premier et si aucun fichier n’est trouvé, il y a une réécriture et .php est ajouté à la demande, qui est ensuite exécuté par le bloc d’emplacement .php qui ne devrait nécessiter aucune modification.

Ajoutez le bloc suivant à votre configuration pour gérer les fichiers statiques.

 location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 30d; root /path/to/public/root; }