环境:
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;
}