Skip to content

Vue项目部署到服务器后刷新404问题

问题原因

Vue中使用了 vueRouter 的 history 模式,这种模式通过修改浏览器的历史记录来实现路由切换,而不是使用传统的URL路径。因此,当用户直接访问某个URL时,服务器端可能没有相应的处理逻辑,就会返回404错误。

解决思路

解决此问题需要在服务器端的配置文件中添加相应的处理逻辑。也就是需要在服务器配置文件中添加一个处理所有请求的默认路由,然后将请求转发到index.html文件。这样,即使用户直接访问某个URL,服务器也能够正确地加载Vue应用,并由Vue Router处理路由。

解决方案

Nginx

在 nginx.conf 中添加配置:

language
location / {
    try_files $uri $uri/ /index.html;
}

apache

在项目下新增一个文件 .htaccess

language
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
</IfModule>

vue-router官方也给出了各种类型服务的 解决方案