sveltkit直接链接在AWS s3中不起作用



我正在使用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.jspage1可能是page1.html,S3对此一无所知。

调整任何page.js/page.server.js(或layout.js/layout.server.js(文件以导出const trailingSlash = 'always'选项。这将生成page1/index.htmlabout/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

最新更新