我正在使用sveltekit向AmazonS3发布一个静态网站。当我在当地跑步时,一切都很好。当我在s3上运行时,我可以连接到example.com
,当我单击指向example.com/page1
的链接时,它可以正常工作。但是,如果我直接在浏览器中键入example.com/page1
,我会得到404。
这是我的svelt.config.js
import adapter from '@sveltejs/adapter-static';
import preprocess from 'svelte-preprocess';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://github.com/sveltejs/svelte-preprocess
// for more information about preprocessors
preprocess: preprocess(),
kit: {
adapter: adapter()
}
};
export default config;
这可能与S3试图为page1
目录index.html
提供服务有关:/page1/index.html
。
看看您发布的示例svelte.config.js
,page1
可能是page1.html
,S3对此一无所知。
调整任何page.js
/page.server.js
(或layout.js
/layout.server.js
(文件以导出const trailingSlash = 'always'
选项。这将生成page1/index.html
、about/index.html
等,然后S3将能够直接查找这些信息,而不是依赖Svelte的路由系统(仅在主页上加载(。
例如:
import { error } from "@sveltejs/kit";
import api from "../../api";
// ADD THIS EXPORT
export const trailingSlash = "always";
export async function load({ params }) {
const data = await api(endpoint);
if (!data) {
throw error(500, "Page Error");
}
return {
...data,
};
}
相关文件:
- https://kit.svelte.dev/docs/page-options#trailingslash
- https://learn.svelte.dev/tutorial/trailingslash