从$到$ .php添加重写后,nginx CSS中断

If I will add the following line to my nginx configuration it will break my website and will run without 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;
}

if I comment the rewrite condition everything will work fine.

What can I do to bring both things to work, the rewrite condition and the css style sheet?

Edit: I got a new problem, now all files like test.php work fine without writing .php, but folders like users/ won't work, I still reveive File not found, normaly it should take the index.php or index.html from the folder, how can I provide both functions? add .php to files and use inde.php/html from folder?

You can separate the try_files and rewrite by replacing the location / block with the following two location blocks:

location / {
    try_files $uri $uri/ @rewriterules;
}

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

That way try_files goes first, and if no file is found there is a rewrite and .php is added to the request, which is then executed by the .php location block which should need no modification.

Add the following block to your configuration to handle static files.

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