Razor Pages 경로 최적화: 절대 경로 → 상대 경로

## 변경사항
- Login.cshtml.cs: /taxbaik/* 절대 경로 제거
  - RedirectUrl: '/taxbaik/admin/dashboard' → '/admin/dashboard'
  - NormalizeRedirectUrl: 경로 정규화 로직 간소화
- 모든 Razor Pages (.cshtml):
  - href='/taxbaik/*' → href='/*' 변경
  - src='/taxbaik/*' → src='/*' 변경
  - Response.Redirect('/taxbaik/*') → Response.Redirect('/*') 변경
- Feed.cshtml: RSS 피드의 절대 URL 유지 (SEO용)

## 원칙
 내부 링크: 상대 경로 사용
 외부 URL (RSS, CanonicalUrl): 절대 URL 유지
 Nginx: /taxbaik 프리픽스 자동 처리

## 결과
 빌드: 0 오류, 2 경고
 전체 경로 최적화 완료

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-07-08 15:29:53 +09:00
parent 3153d3c095
commit 91014a5ae3
16 changed files with 74 additions and 71 deletions
+9 -6
View File
@@ -32,7 +32,7 @@ public class LoginModel(AuthService authService) : PageModel
public TokenPairResponse? TokenPair { get; set; }
public string RedirectUrl { get; set; } = "/taxbaik/admin/dashboard";
public string RedirectUrl { get; set; } = "/admin/dashboard";
public void OnGet()
{
@@ -76,14 +76,14 @@ public class LoginModel(AuthService authService) : PageModel
private static string NormalizeRedirectUrl(string? returnUrl)
{
if (string.IsNullOrWhiteSpace(returnUrl))
return "/taxbaik/admin/dashboard";
return "/admin/dashboard";
if (Uri.TryCreate(returnUrl, UriKind.Relative, out var relative))
{
var value = relative.ToString();
if (value.StartsWith('/'))
return value.StartsWith("/taxbaik/", StringComparison.OrdinalIgnoreCase) ? value : $"/taxbaik{value}";
return $"/taxbaik/{value}";
return value; // 절대 경로는 그대로 사용 (/admin/dashboard 등)
return $"/{value}"; // 상대 경로는 /로 시작하도록
}
if (Uri.TryCreate(returnUrl, UriKind.Absolute, out var absolute))
@@ -91,11 +91,14 @@ public class LoginModel(AuthService authService) : PageModel
if (string.Equals(absolute.Host, "www.taxbaik.com", StringComparison.OrdinalIgnoreCase) ||
string.Equals(absolute.Host, "taxbaik.com", StringComparison.OrdinalIgnoreCase))
{
// PathAndQuery에서 /taxbaik 프리픽스 제거 (Nginx가 처리)
var path = absolute.PathAndQuery;
return path.StartsWith("/taxbaik/", StringComparison.OrdinalIgnoreCase) ? path : $"/taxbaik{path}";
return path.StartsWith("/taxbaik/", StringComparison.OrdinalIgnoreCase)
? path.Substring("/taxbaik".Length) // "/taxbaik/admin" → "/admin"
: path;
}
}
return "/taxbaik/admin/dashboard";
return "/admin/dashboard";
}
}