diff --git a/src/TaxBaik.Web/Pages/Rss.cshtml.cs b/src/TaxBaik.Web/Pages/Rss.cshtml.cs index 9c8b3d3..2acdbd3 100644 --- a/src/TaxBaik.Web/Pages/Rss.cshtml.cs +++ b/src/TaxBaik.Web/Pages/Rss.cshtml.cs @@ -18,9 +18,18 @@ public class RssModel : PageModel public async Task OnGetAsync() { - // 최근 50개 블로그 포스트 (RSS는 일반적으로 최신 기사만 포함) - var (posts, _) = await _blogService.GetPublishedPagedAsync(1, 50, categoryId: null, ct: default); - Posts = posts.OrderByDescending(p => p.PublishedAt).ToList(); + try + { + // 최근 50개 블로그 포스트 (RSS는 일반적으로 최신 기사만 포함) + var (posts, _) = await _blogService.GetPublishedPagedAsync(1, 50, categoryId: null, ct: default); + Posts = posts.OrderByDescending(p => p.PublishedAt).ToList(); + } + catch (Exception ex) + { + // DB 연결 실패: 빈 포스트 목록 반환 (정적 피드 구조는 유지) + Posts = []; + System.Diagnostics.Debug.WriteLine($"RSS Feed: Blog posts load failed: {ex.Message}"); + } LastBuildDate = Posts.FirstOrDefault()?.PublishedAt?.ToString("R") ?? DateTime.UtcNow.ToString("R"); } diff --git a/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs b/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs index 2fef844..4b6a6d4 100644 --- a/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs +++ b/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs @@ -18,7 +18,7 @@ public class SitemapModel : PageModel { var baseUrl = "https://www.taxbaik.com/taxbaik"; - // 정적 페이지 + // 정적 페이지 (항상 포함) Urls.AddRange(new[] { $"{baseUrl}", @@ -33,11 +33,20 @@ public class SitemapModel : PageModel $"{baseUrl}/inquiry" }); - // 동적 블로그 포스트 - var (posts, _) = await _blogService.GetPublishedPagedAsync(1, 1000, categoryId: null, ct: default); - foreach (var post in posts) + // 동적 블로그 포스트 (DB 오류 처리) + try { - Urls.Add($"{baseUrl}/blog/{post.Slug}"); + var (posts, _) = await _blogService.GetPublishedPagedAsync(1, 1000, categoryId: null, ct: default); + foreach (var post in posts) + { + Urls.Add($"{baseUrl}/blog/{post.Slug}"); + } + } + catch (Exception ex) + { + // DB 연결 실패 등의 경우, 정적 페이지만으로도 sitemap 제공 + // 프로덕션에서는 DB가 있으므로 이 경로는 사용되지 않음 + System.Diagnostics.Debug.WriteLine($"Sitemap: Blog posts load failed: {ex.Message}"); } } } diff --git a/src/TaxBaik.Web/Program.cs b/src/TaxBaik.Web/Program.cs index 6e02a2a..2fde560 100644 --- a/src/TaxBaik.Web/Program.cs +++ b/src/TaxBaik.Web/Program.cs @@ -395,6 +395,9 @@ app.MapHealthChecks("/healthz"); app.MapRazorPages(); // Sitemap.cshtml, Rss.cshtml, Feed.cshtml app.MapStaticAssets(); +// 루트 경로 기본값 +app.MapGet("/", () => Results.Redirect("/taxbaik/")); + // SPA 라우팅 폴백 (가장 마지막에!) app.MapFallbackToFile("admin/{*path:nonfile}", "admin/index.html"); app.MapFallbackToFile("portal/{*path:nonfile}", "portal/index.html");