nginx改写路由的一个小思路

环境:

fastadmin(tp5) + nginx

问题简介:

域名: www.abc.com
介绍: 这是一个地区分类信息的站点,每一个地区的内容不互通,a地区只显示a地区的内容,b地区只显示b地区的内容.
问题: 如何通过域名来识别是不同的地区? (信息系统,不同地区的页面是相同的,只是信息不同,希望通过域名来识别.)
示例:
www.abc.com/a/1.html 显示 a 地区的信息
www.abc.com/b/1.html 显示 b 地区的信息
www.abc.com/c/1.html 显示 c 地区的信息

解决思路:

我们想要的是 将 www.abc.com/a/1.html 中的 /a 转为 www.abc.com/1.html?city=a 以此作为参数识别.
那么利用 Nginx的重写,就可以达到目的,如下

location /shanghai {
		rewrite  /shanghai(.*)  /$1?city=shanghai  last;   break;
}

location /beijing {
		rewrite  /beijing(.*)  /$1?city=beijing  last;   break;
}
链接演示

如上, 如果我们打开
打开链接: http://www.abc.com/shanghai/test?a=1&b=2
实际链接: http://www.abc.com/test?a=1&b=2&city=shanghai

总结

利用 nginx 的路由改写功能加上tp5自身的路由来实现这个功能.


vue项目打包来实现不同的文件夹访问不同的地区

利用 uniapp 来编写项目,然后打包的时候,选择好目录,例如 /beijing/, 在项目中,可以利用 window.location.pathname 来获取到, 例如 /beijing//beijing. 以此来作为参数来判断不同的地区.

打包上线的时候, nginx 中也要做相应的设置, 因为我们为了去掉 # 号, 而选择了 history 模式,所以需要设置 nginx的伪静态,如下

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

location /beijing {
  try_files $uri $uri/ /beijing/index.html;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值