6

一天中的好时光!

我正在使用带有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 服务器提供了它需要正确识别页面何时不存在(在应用程序内部)的信息,但它并没有尝试这样做,而是简单地检查文件是否物理存在。

4

0 回答 0