在 Vue.js 中,当你使用 vue-router 并将其模式设置为 history
,URL 将不再包含 #
,并且会尝试直接访问服务器上的对应路径。这意味着服务器需要被配置为对所有未知路径返回你的 Vue 应用的 index.html 文件,以便 Vue 路由器可以接管并显示正确的组件。
你遇到的问题是,当你尝试访问 /login
页面时,服务器返回了 404 错误。这是因为服务器不知道 /login
路径,并且没有配置为返回 index.html 文件。
要解决这个问题,你需要在你的服务器上进行配置。如果你正在使用 nginx,你需要修改 nginx 的配置,以便在找不到文件或目录时返回 index.html。以下是一个示例配置:
server {
listen 80;
server_name example.com;
location / {
root /path/to/your/vue/app/dist;
try_files $uri $uri/ /index.html;
}
}
这里的关键是 try_files
指令,它告诉 nginx 首先尝试返回请求的文件或目录,如果找不到,就返回 /index.html
。
此外,如果你的项目是通过 webpack-dev-server 运行的,你也需要确保它配置为支持 history 模式。这通常在 webpack 的配置文件中完成,如下:
devServer: {
historyApiFallback: true
}
historyApiFallback` 选项告诉 webpack-dev-server 在找不到文件时返回 index.html。
最后,确保你的 Vue 路由器配置正确,并且你的所有路由都被正确定义。
希望这能帮助你解决问题!如果你还有其他问题,请随时提问。
需要在Nginx中修改一下配置文件。这个在
vue-router
的文档中有说明的👉 HTML5 History 模式 | Vue Router