Vue 去除hash路由默认的#

本文介绍如何在Vue项目中配置路由使用History模式而非默认的Hash模式,并提供了具体的配置步骤及nginx示例配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

. vue 开启路由后,默认的路由中会带上'#', 不雅

分析

. vue路由默认的是hash的模式, 开启history默认 可以向正常的路由访问
  但是这种需要后端支持, 不然很容易404

解决

1. 实例化路由规则的时候 

const router = new VueRouter({
mode: ‘history’,
routes // (缩写)相当于 routes: routes
})

2. nginx 相应的配置

location / {
try_files uriuriuri/ /index.html;
}

3. 参考文档 `https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90`
<think>我们正在使用VueRouter,因为VueRouter默认使用hash模式(带#),要移除#需要切换到history模式。步骤:1.在定义路由时,创建router实例,设置mode为&#39;history&#39;(在Vue Router4中,使用createWebHistory函数)。2.确保服务器配置正确,因为history模式需要服务器支持,以避免直接访问子路由时出现404错误。具体操作:在Vue项目中,我们通常在router/index.js文件中定义路由。使用VueRouter4(与Vue3配套)时,我们这样设置:首先,安装VueRouter(如果尚未安装):npm installvue-router@4然后,在路由配置文件(例如src/router/index.js)中:import {createRouter, createWebHistory} from&#39;vue-router&#39;importHome from&#39;../views/Home.vue&#39;const routes= [{ path: &#39;/&#39;, component: Home},// ...其他路由]const router= createRouter({history: createWebHistory(),routes})exportdefault router这样就去掉了URL中的#。但是,请注意:使用history模式后,当你直接访问一个子路由(例如/user/123)时,服务器可能会返回404,因为服务器需要配置为对于任何未找到静态资源的请求都返回index.html。服务器配置示例(以Nginx为例):server{listen80;server_name example.com;location/ {try_files $uri $uri//index.html;}}其他服务器(如Apache、Node.js服务器)也需要类似配置。参考引用[1]中提到了Nginx配置的重写规则,我们可以借鉴其思路:将所有请求重定向到index.html,由前端路由处理。另外,在开发阶段,Vite服务器已经内置了对于history模式的支持,所以开发时不会有问题。但生产环境部署时,必须确保服务器配置正确。总结:修改路由模式为history,并配置服务器支持。相关问题:1.如何配置Nginx服务器以支持Vuehistory模式?2.在Vue Router中,history模式hash模式有什么区别?3.如果使用Vite,部署时有哪些注意事项?</think>在 Vue + Vite 项目中移除 URL 中的 `#` 符号,需要通过 Vue Router 的 history 模式实现。以下是详细步骤: ### 解决方案 1. **修改路由配置** 在路由文件(通常为 `src/router/index.js`)中: ```javascript import { createRouter, createWebHistory } from &#39;vue-router&#39; // 替换 createWebHashHistory const router = createRouter({ history: createWebHistory(), // 使用 history 模式 routes: [...] }) ``` 将 `createWebHashHistory()` 改为 `createWebHistory()` 即可移除 URL 中的 `#`。 2. **服务器配置(关键)** 由于 history 模式依赖服务器配置,需在服务器添加回退规则: - **Nginx 示例**: ```nginx server { location / { try_files $uri $uri/ /index.html; # 所有请求重定向到 index.html } } ``` 参考引用[1]的重写规则思路[^1]。 - **Vite 开发服务器**:已自动支持,无需额外配置。 3. **项目部署注意事项** - 确保所有路由在直接访问时返回 `index.html` - 静态资源路径需使用绝对路径(如 `publicPath: &#39;/&#39;`) ### 常见问题排查 - **404 错误**:未配置服务器回退规则,需确保服务器返回 `index.html` - **路由跳转失败**:检查路由守卫逻辑是否兼容 history 模式 - **静态资源加载失败**:在 `vite.config.js` 中设置 `base: &#39;/&#39;` ### 示例配置对比 | **模式** | 路由创建方法 | URL 示例 | |----------------|--------------------------|-------------------| | Hash 模式默认)| `createWebHashHistory()` | `https://site.com/#/home` | | **History 模式** | `createWebHistory()` | `https://site.com/home` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值