我正在编写一个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; }