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

如果将以下行添加到我的nginx配置中,它将破坏我的网站并且将在没有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;
}

如果我评论重写条件,一切都会正常.

我该怎么做才能使这两件事,重写条件和CSS样式表都起作用?

编辑:我遇到了一个新问题,现在所有的test.php之类的文件都可以正常工作,而无需编写.php,但是像users /这样的文件夹却无法正常工作,我仍然可以查看未找到的文件,通常它应该使用index.php或index.文件夹中的html,我该如何提供这两种功能?将.php添加到文件并从文件夹使用inde.php / html?

最佳答案
您可以将try_files分开并重写,方法是将位置/块替换为以下两个位置块:

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

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

这样,try_files首先运行,如果找不到文件,则会进行重写,然后将.php添加到请求中,然后由.php位置块执行,而该块无需修改.

相关文章

文章浏览阅读3.7k次,点赞2次,收藏5次。Nginx学习笔记一、N...
文章浏览阅读1.7w次,点赞14次,收藏61次。我们在使用容器的...
文章浏览阅读1.4k次。当用户在访问网站的过程中遇到404错误时...
文章浏览阅读2.7k次。docker 和 docker-compose 部署 nginx+...
文章浏览阅读1.3k次。5:再次启动nginx,可以正常启动,可以...
文章浏览阅读3.1w次,点赞105次,收藏182次。高性能:Nginx ...