Vue.js 使Web服务器像Vue dev server那样处理页面刷新/书签

Vue.js 使Web服务器像Vue dev server那样处理页面刷新/书签,vue.js,nuxt.js,Vue.js,Nuxt.js,我正在编写一个Vue/Nuxt应用程序。当我使用开发服务器(“Thread dev”->localhost:3000)时,页面刷新效果非常好。我可以导航到应用程序中的任何页面,刷新浏览器,页面加载正常 当我将应用程序生成到/dist文件夹中,然后将其作为常规web服务器的静态页面使用时,页面刷新会导致服务器生成404错误。例如,我可以转到/signin,单击忘记密码转到/forgotpassword,然后重新加载页面。开发时工作正常,生产失败 生成的应用程序有一个/forgotpassword目

我正在编写一个Vue/Nuxt应用程序。当我使用开发服务器(“Thread dev”->localhost:3000)时,页面刷新效果非常好。我可以导航到应用程序中的任何页面,刷新浏览器,页面加载正常

当我将应用程序生成到/dist文件夹中,然后将其作为常规web服务器的静态页面使用时,页面刷新会导致服务器生成404错误。例如,我可以转到/signin,单击忘记密码转到/forgotpassword,然后重新加载页面。开发时工作正常,生产失败

生成的应用程序有一个/forgotpassword目录,其中包含index.html。当我直接转到/forgotpassword/index.html时,生产服务器会加载它。(虽然它区分大小写,不像dev服务器,它重定向到/signin。我不知道为什么,但它可能与这个问题无关。)

此外,当我转到错误的url时,开发服务器返回一个Vue/Nuxt 404页面,而生产服务器返回一个服务器生成的页面

我想让我的生产web服务器像开发服务器一样工作。生产服务器是用Java编写的,我可以控制它的工作方式

那么,我需要在生产服务器中进行哪些更改才能使其正常工作

更新
好的,部分答案是在子文件夹中启用欢迎文件。但是,当存在错误的URL时,开发服务器会以某种方式显示客户端404页面。这是如何发生的?

如果您在
历史记录
模式下使用路由器,您应该相应地设置您的服务器为应用提供服务。您可以在中找到NGINX或APACHE的两种配置

Apache


你能解释一下这到底是做什么的吗?它只是告诉你的服务器如何解释URL,在哪里查找。以nginx为例,它基于Uri使用两种不同的结构检查现有文件。否则,它将使用索引作为回退。那';这就是为什么使用此设置时没有404 on刷新。希望这对汉克斯有帮助。这似乎只是在子文件夹中启用欢迎文件。这很有帮助,但不是全部答案。嗯,你好?不要在没有给出理由的情况下否决投票。
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>
nginx
location / {
  try_files $uri $uri/ /index.html;
}