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;
}

你可能感兴趣的:(nginx重写)