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

前端之家收集整理的这篇文章主要介绍了从$到$.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位置块执行,而该块无需修改.

猜你在找的Nginx相关文章