javascript - 怎么去掉使用vue-router后链接中的 “#!”
巴扎黑
巴扎黑 2017-04-11 12:27:04
[JavaScript讨论组]

vue-router文档中写了一个路由选项如下:

当创建路由器实例时,可以使用以下参数自定义路由器的行为。

hashbang
默认值: true
只在 hash 模式下可用
当 hashbang 值为 true 时,所有的路径都会被格式化为以 #! 开头。例如 router.go('/foo/bar') 会把浏览器的 URL 设为 example.com/#!/foo/bar 。

我在使用过这个参数设置为false后,链接中没有感叹号,依然还有#,如何去掉这个#号。这导致网页不能正常访问。

巴扎黑
巴扎黑

全部回复(5)
PHP中文网

vue-router 配置设置为 :

var router = new VueRouter({hashbang: false, history: true})
伊谢尔伦

这其实需要你理解什么是hashhistory和bowserhistory
带#的hash其实就是根据window.location.hash里的字符串来处理路由关系,页面刷新肯定是没问题的
但是不带#的bowserhistory只有斜杠/相当于访问目录,当前会话肯定没问题,但是刷新页面肯定会挂,放弃hash#的bowserhistory是需要服务端支持的,要做映射的。

还有就是#是不会导致页面访问错误的啊。。。hash是url标准里的一环。。

映射关系例如你访问http://abc/#a 这其实就是访问abc的首页下的a路由
如果你访问http://abc/a 如果没做服务器映射的话,相当于你要找根目录下的a文件,然而这个目录其实是前端定义的路由,服务器上是没有a这个文件的。这时候就需要服务端把abc/映射到abc/index.html 之后的就是查询的值

怪我咯

history: true 后,正常访问都进不了了~

迷茫

设置mode: 'history'就可以了

巴扎黑
new Router({
  mode: 'history'
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号