VUE history模式Nginx配置
Vue项目默认路由模式为hash模式,hash模式下url中会带有#号,子页面URL形式为:/mapp/#/subpage,经大神科普了解到,hash模式下页面跳转,只是刷新页面内容,页面整体并没有重新加载。微信服务号网页授权访问需配置redirect_url,微信平台会在该URl后拼接?code=XXX&state=XXXX,若redirect_url为hash模式下的URL,微信平台.
vue history模式Nginx配置
vue-router默认路由模式为hash模式,使用url的hash来模拟一个完整的 url,形式为/mapp/#/subpage,于是当url改变时,只是刷新页面内容,页面不会重新加载。
但hash模式的url不像正常的url,在配置微信服务号网页授权访问的redirect_url时,微信平台会在该url后拼接?code=XXX&state=XXXX,若redirect_url为hash模式下的url,微信平台返回的连接是 /mapp?code=XXX&state=XXXX/#/subpage这种形式的,看起来不太美观,为使微信返回的url为正常形式,可以用路由的history模式,这种模式充分利用 history.pushState API 来完成url跳转而无须重新加载页面。
当你使用 history 模式时,url就像正常的url,例如 “http://yoursite.com/mapp/subpage”,不过这种模式还需要后台配置支持。因为我们的应用是单页面应用,如果后台没有正确的配置,当用户在浏览器直接访问 "http://yoursite.com/mapp/subpage"就会返回 404。对于后台如何配置支持,官网:https://router.vuejs.org/zh/guide/essentials/history-mode.html提供的Nginx配置方案:
location / {
try_files $uri $uri/ /index.html;
}
子目录部署
若项目没有直接部署在Nginx主目录下,而是在其子目录,如:
Nginx配置root路径为:/usr/local/nginx/html,子目录路径为:/usr/local/nginx/html/your_folder,此时Nginx应该这样配置:
location / {
try_files $uri $uri/ /your_folder/index.html;
}
重点是要加 /your_folder/index.html
Nginx 转发时Header中信息丢失
通过Nginx转发后, Header中access_token信息丢失,经查,发现Nginx在转发时,header中带下划线_的属性默认不转发,需要增加配置:
underscores_in_headers on;
如下所示:
server {
listen 80;
server_name 127.0.0.1;
#charset koi8-r;
#access_log logs/host.access.log main;
underscores_in_headers on;
...(其他略)
}
更多推荐
所有评论(0)