如何在 SvelteKit 中使用 Relative Href?
How to Make Relative Href Work in SvelteKit?
我想用 SvelteKit 构建一个 Web 应用程序,其中一页列出所有项目(带有潜在的搜索查询参数),然后每个单独的项目一页。如果我必须使用后端生成的所有内容以老式方式构建它,我的路径将是 /items/
用于项目列表,/items/123
用于项目 123
,等等。即,要转到项目 123
的页面,无论您当前是在索引 (/items/
) 还是在该页面,link 和 href="123"
都将起作用一个 particuler 项目 (/items/[id]
).
使用 SvelteKit,如果我创建文件 routes/items/index.svelte
和 routes/items/[id].svelte
,那么 routes/items/index.svelte
将具有路径 /items
, 没有 尾部斜杠,结果 link 和 href="123"
将导致 /123
,导致“未找到”错误。
同样的 link 也适用于单个项目的页面,例如 /items/456
。
这与传统 HTML 模型中的完全不同,在传统模型中,/items/
(或 /items/index.html
)中的 link 与来自 /items/[id].html
.
的 link
现在 svelte.config.js
中有一个 trailingSlash
选项,您可以将其设置为 always
,以便 routes/items/index.svelte
对应于路径 /items/
,但是 routes/items/[id].svelte
有路径 /items/[id]/
,我们又遇到了同样的问题:一个 href
值不能同时在单个项目的索引和页面上工作。
我现在看到的唯一方法是使用绝对路径,但它不是很可组合。我的猜测是我做错了什么。
您没有遗漏任何东西 - 目前在 SvelteKit 中不可能为某些页面添加尾部斜杠,但对其他页面则不能。有一个 open GitHub issue 您可能感兴趣,它建议添加额外的 trailingSlash
选项。此问题引用了您描述的确切问题:
The trailingSlash options introduced in #1404 don't make it straightforward to add trailing slashes to index pages but not to leaf pages. For example you might want to have /blog/ and /blog/some-post rather than /blog and /blog-some-post, since that allows the index page to contain relative links.
在添加该功能之前,您需要使用绝对路径。
我想用 SvelteKit 构建一个 Web 应用程序,其中一页列出所有项目(带有潜在的搜索查询参数),然后每个单独的项目一页。如果我必须使用后端生成的所有内容以老式方式构建它,我的路径将是 /items/
用于项目列表,/items/123
用于项目 123
,等等。即,要转到项目 123
的页面,无论您当前是在索引 (/items/
) 还是在该页面,link 和 href="123"
都将起作用一个 particuler 项目 (/items/[id]
).
使用 SvelteKit,如果我创建文件 routes/items/index.svelte
和 routes/items/[id].svelte
,那么 routes/items/index.svelte
将具有路径 /items
, 没有 尾部斜杠,结果 link 和 href="123"
将导致 /123
,导致“未找到”错误。
同样的 link 也适用于单个项目的页面,例如 /items/456
。
这与传统 HTML 模型中的完全不同,在传统模型中,/items/
(或 /items/index.html
)中的 link 与来自 /items/[id].html
.
现在 svelte.config.js
中有一个 trailingSlash
选项,您可以将其设置为 always
,以便 routes/items/index.svelte
对应于路径 /items/
,但是 routes/items/[id].svelte
有路径 /items/[id]/
,我们又遇到了同样的问题:一个 href
值不能同时在单个项目的索引和页面上工作。
我现在看到的唯一方法是使用绝对路径,但它不是很可组合。我的猜测是我做错了什么。
您没有遗漏任何东西 - 目前在 SvelteKit 中不可能为某些页面添加尾部斜杠,但对其他页面则不能。有一个 open GitHub issue 您可能感兴趣,它建议添加额外的 trailingSlash
选项。此问题引用了您描述的确切问题:
The trailingSlash options introduced in #1404 don't make it straightforward to add trailing slashes to index pages but not to leaf pages. For example you might want to have /blog/ and /blog/some-post rather than /blog and /blog-some-post, since that allows the index page to contain relative links.
在添加该功能之前,您需要使用绝对路径。