【发布时间】:2023-03-11 08:12:01
【问题描述】:
我正在尝试使用 Nuxt.js 创建一个 SSG 站点。 当我访问未在 nuxt.config.js 的 generate 属性中设置的路由时, 我想在不更改 URL 的情况下显示 404 页面的内容。(使用 htaccess)
以下是正在建设中的网站
http://we-are-sober.d3v-svr.com/xxxx
这是按预期工作的。
http://we-are-sober.d3v-svr.com/user/xxxx
这没有按预期工作。
页面404的内容显示片刻,但很快就执行了基于“user/_id.vue”动态路由的流程。
问题的关键在于,不存在的路由表现得好像它存在一样。 有谁知道如何解决这个问题?
这里是源代码。 https://github.com/yhirochick/rewrite_test
404.vue
https://github.com/yhirochick/rewrite_test/blob/master/pages/404.vue
user/_id.vue
https://github.com/yhirochick/rewrite_test/blob/master/pages/user/_id.vue
nuxt.config.js
https://github.com/yhirochick/rewrite_test/blob/master/nuxt.config.js#L43-L45
.htaccess
https://github.com/yhirochick/rewrite_test/blob/master/static/.htaccess
我是日本人。以上文字基于谷歌翻译。 可能很难理解,但谢谢。
【问题讨论】:
-
如果你有
user/_id,路由并输入/user/xxx,xxx被视为id。当您到达页面时,您需要进行验证,而不是尝试在其他地方进行重定向。您甚至可以调用后端,查看输入(此处为:xxx)是否存在,如果不存在,则重定向到 404。您可能对此感兴趣吗? -
@kissu 我正在尝试构建的网站使用按需付费 API。因此,客户端执行的 API 应该尽可能的小。来自客户端的请求仅用于关键字搜索功能。因此,客户端不会检查 id 的存在。相反,
nuxt generate只会根据现有 id 生成页面。 -
@kissu 感谢您详细调查。我很抱歉回复晚了。不幸的是,解决方案不是我所期望的。我的预期行为是在不更改 URL 的情况下获得 404 页面显示。例如,如果您访问以下任一 URL,则该 URL 不会更改,并且会显示“此用户不存在”。但是 URL 会改变。这不是我所期望的。 we-are-sober.d3v-svr.com/users/11we-are-sober.d3v-svr.com/users/999
-
这是一个小改动,而不是重定向返回错误。我已经用所需的行为更新了我的答案并推送了相关代码。
标签: apache vue.js .htaccess nuxt.js