一天中的好时光!
我正在使用带有npm run generate
命令的静态生成的网站,虽然放置在 pages 目录中的所有页面都可以正常工作(动态页面、所有已实现的功能等),但不存在的页面只是返回默认的 Web 服务器错误页面。
在本地机器上,npm run dev
我可以被迫出现 Nuxt 生成的“找不到页面”错误,而在运行 Apache 的生产服务器上,我不能使用包提供的中间件(例如@nuxt/sitemap)作为以及任何可能触发错误的页面 (40*,5**,3**) 都由 Web 服务器直接处理。
由于npm run dev
刚刚启动express web 服务器,我猜 express 设置的任何路由规则都可以在 Apache .htaccess配置中重现,我只是不知道在哪里寻找它们。
这是我在没有Nuxt的 Vue 项目中的配置,一切都按预期工作(重定向等)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
# Fonts
# Add correct content-type for fonts
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-ttf .ttf
AddType application/x-font-opentype .otf
AddType application/font-woff .woff
AddType application/font-woff2 .woff2
AddType image/svg+xml .svg
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-opentype "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
但是,当在 Nuxt 应用程序上运行相同的文件时,每个请求都只是重定向回主页。
这是在nuxt.config.js中配置路由器的方式
router: {
mode: 'history',
middleware: [
'i18n',
'check-auth'
]
}
因此,从我的角度来看,我已经向 Web 服务器提供了它需要正确识别页面何时不存在(在应用程序内部)的信息,但它并没有尝试这样做,而是简单地检查文件是否物理存在。