自定义目录结构SvelteKit项目中Sveltia CMS OAuth认证后/admin路由404求助
解决SvelteKit集成Sveltia CMS OAuth认证后/admin路由404问题
1. 检查SvelteKit的路由与路径配置
由于项目使用自定义网站目录/site/htdocs,需确保SvelteKit正确识别该路径作为资源与路由根目录:
- 在
svelte.config.js中通过kit.paths指定基础路径:export default { kit: { paths: { base: '/site/htdocs', }, }, }; - 确认
/admin路由组件位置正确:若用Sveltia嵌入模式,需在src/routes/admin/+page.svelte中添加CMS入口代码:<script> import { mountCMS } from '@sveltia/cms'; import config from '../../sveltia.config.yml?raw'; let container; async function initCMS() { await mountCMS(container, { config }); } $: if (container) initCMS(); </script> <div bind:this={container} />
2. 修正OAuth回调URL与Sveltia CMS配置
- GitHub OAuth回调URL:必须包含完整网站路径前缀,即
https://你的域名/site/htdocs/admin/auth/callback,而非仅/admin/auth/callback。 - Sveltia CMS config.yml:更新
site_url、base_url及认证回调地址,匹配实际路径:site_url: https://你的域名/site/htdocs base_url: /site/htdocs/admin auth: provider: github callback_url: https://你的域名/site/htdocs/admin/auth/callback
3. 验证SvelteKit适配器的静态资源输出
若使用静态适配器(如@sveltejs/adapter-static),确保适配器配置指向正确输出目录:
export default { kit: { adapter: adapter({ pages: 'site/htdocs', assets: 'site/htdocs', }), }, };
编译后的静态文件将直接输出到/site/htdocs,保证/admin路径资源可被正确访问。
4. 排查重定向路径问题
OAuth认证完成后,若重定向路径不匹配会触发404:
- 打开浏览器开发者工具查看网络请求,确认认证后的重定向URL包含
/site/htdocs/admin前缀。 - 若路径缺失前缀,在Sveltia初始化代码中手动指定
basePath参数:await mountCMS(container, { config, basePath: '/site/htdocs/admin' });
内容的提问来源于stack exchange,提问作者Nguyễn QuangNguyễn
相关产品推荐
相关产品推荐

