使Web服务器像Vue dev服务器一样处理页面刷新/书签



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

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

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

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

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

那么,我需要对生产服务器进行哪些更改才能使其正常运行?

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

如果您在History模式下使用路由器,则应相应地设置服务器为应用程序提供服务。您可以在路由器文档中找到NGINX或APACHE的两种配置

Apache

<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

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

最新更新