请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请教关于网站根目录的Location匹配问题

服务器上文件目录如下

root@xxx:/var/www/html# tree
.
├── admin
├── home
└── weixin

home下是网站主页的项目

admin 是管理平台,通过www.domain.cn/admin/访问
weixin 是微信方面的,通过www.domain.cn/weixin/访问

nginx配置是

server {
        listen 80;
        server_name domain.cn;
        root /var/www/html/;
        index index.html;

  location /weixin/ {
        try_files $uri /weixin/index.html;
   }

  location /admin/ {
        root /var/www/html/;
        index index.html;
   }

  location / {
        root /var/www/html/home/;
        index index.html;
   }

但是这样感觉不够优雅,因为如果要添加新的项目,有一个就要单独设置一个location
我希望是能把home的那条location单独拎出来,其他的项目,因为是静态文件,走server的root位置,而不需要另外单独配置location,这样如果要添加新的项目,只需要放到/var/www/html/目录下即可。

server {
        listen 80;
        server_name domain.cn;
        root /var/www/html/;
        index index.html;

  location /weixin/ {
        try_files $uri /weixin/index.html;
   }



  location / {
        root /var/www/html/home/;
        index index.html;
   }

但是这样会导致访问www.domain.cn/admin/ 404

我想应该是

location /

这里匹配的问题,该怎么匹配根目录呢 谢谢

正在回答 回答被采纳积分+3

1回答

Jeson 2018-01-21 19:29:03

很好的问题描述,我觉得导致你404的原因是因为在配置location /下root路径为/var/www/html/home,所以/admin的路径请求在/var/www/html/home/admin是找不到的。因为admin的目录仍然放在了/var/www/html这一级下。


0 回复 有任何疑惑可以回复我~
  • 提问者 ch3rish #1
    是的 location / 导致把访问www.xxx.com/admin/的 请求也命中了,那我想单独命中www.xxx.com 这样 ,但是又不影响admin的访问,该怎么匹配呢?
    回复 有任何疑惑可以回复我~ 2018-01-22 11:51:59
  • 提问者 ch3rish #2
    目前也有个解决方案,是把home项目内的文件拿出来,直接放到/var/www/html/下面,但是这样会导致/var/www/html/很乱,index.html、css、image、js都在里面。。(曲线救国方案
    回复 有任何疑惑可以回复我~ 2018-01-22 11:56:32
  • Jeson 回复 提问者 ch3rish #3
    放一个目录的方式,那最好把admin的代码内容放入到/home目录中,这样行的项目都网home目录下生成。
    不过,我感觉访问http://www.xxx.com/admin是后台请求吧,这样的话,最好需要考虑下安全规则,所以怎么也得用location独立配置一段。
    回复 有任何疑惑可以回复我~ 2018-01-23 19:42:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信