Skip to content

Commit 94aa289

Browse files
authored
Feat/improve seo (#59)
* feat: change html lang to ko * fix: update generateMetadata * feat: add canonical
1 parent 005b10c commit 94aa289

File tree

2 files changed

+47
-61
lines changed

2 files changed

+47
-61
lines changed

src/app/(web)/[resortId]/page.tsx

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,33 @@
1-
export { default } from '@/views/resort-detail/ui/resort-detail-page';
1+
import type { Metadata } from 'next';
2+
3+
import { ResortData } from '@/entities/resort';
4+
import ResortDetailPage from '@/views/resort-detail/ui/resort-detail-page';
5+
6+
export async function generateMetadata({
7+
params,
8+
}: {
9+
params: { resortId: string };
10+
}): Promise<Metadata> {
11+
const resortId = params?.resortId;
12+
const resort = ResortData.find((resort) => resort.id === +resortId);
13+
14+
return {
15+
title: resort ? `${resort.name} - WeSki` : 'WeSki : 스키장 혼잡도 확인 서비스',
16+
description: resort
17+
? `${resort.name}의 실시간 정보를 확인해보세요.`
18+
: '위스키는 웹캠, 날씨, 슬로프 등 실시간 스키장 정보를 탐색할 수 있는 스키장 큐레이션 서비스입니다.',
19+
alternates: {
20+
canonical: `/${resortId}`,
21+
},
22+
openGraph: {
23+
images: [
24+
{
25+
url: '/assets/og.png',
26+
alt: 'WeSki',
27+
},
28+
],
29+
},
30+
};
31+
}
32+
33+
export default ResortDetailPage;

src/app/layout.tsx

Lines changed: 14 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2,75 +2,29 @@ import '@/app/globals.css';
22

33
import type { Metadata } from 'next';
44

5-
import { ResortData } from '@/entities/resort';
65
import KakaoScript from '@/shared/lib/kakao-script';
76
import { Toaster } from '@/shared/ui/toaster';
87

98
import Providers from './_providers';
109

11-
export async function generateMetadata({ params }: { params: { id: string } }): Promise<Metadata> {
12-
const id = params?.id;
13-
const resort = ResortData.find((resort) => resort.id === +id);
14-
15-
return {
16-
title: resort ? `${resort.name} - WeSki` : 'WeSki : 스키장 혼잡도 확인 서비스',
17-
description: resort
18-
? `${resort.name}의 실시간 정보를 확인해보세요.`
19-
: '위스키는 웹캠, 날씨, 슬로프 등 실시간 스키장 정보를 탐색할 수 있는 스키장 큐레이션 서비스입니다.',
20-
keywords: [
21-
'스키장 웹캠',
22-
'스키장 날씨',
23-
'스키장 설질',
24-
'스키장 웹캠',
25-
'강원도 날씨',
26-
'원주 스키장',
27-
'강원도 스키장',
28-
'서울근교 스키장',
29-
'스키장 데이트',
30-
'웰리힐리',
31-
'하이원',
32-
'휘닉스파크',
33-
'휘팍',
34-
'용평 스키장',
35-
'모나',
36-
'알펜시아',
37-
'비발디파크',
38-
'비발디',
39-
'무주 스키장',
40-
'무주 덕유산',
41-
'오투리조트',
42-
'지산리조트',
43-
'곤지암',
44-
'곤지암리조트',
45-
'곤지암스키장',
46-
'오크벨리',
47-
'에덴벨리',
48-
'강원도 설질',
49-
'강원도 날씨',
50-
'엘리시안',
51-
'엘리사안 강촌',
52-
'스키장 폐장일',
53-
'스노우보드',
54-
'스키',
55-
'숏스키',
56-
'스키장',
57-
'썰매',
58-
'겨울데이트',
10+
export const metadata: Metadata = {
11+
metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL || 'https://www.weski.live'),
12+
title: 'WeSki : 스키장 혼잡도 확인 서비스',
13+
description:
14+
'위스키는 웹캠, 날씨, 슬로프 등 실시간 스키장 정보를 탐색할 수 있는 스키장 큐레이션 서비스입니다.',
15+
openGraph: {
16+
images: [
17+
{
18+
url: '/assets/og.png',
19+
alt: 'WeSki',
20+
},
5921
],
60-
openGraph: {
61-
images: [
62-
{
63-
url: '/assets/og.png',
64-
alt: 'WeSki',
65-
},
66-
],
67-
},
68-
};
69-
}
22+
},
23+
};
7024

7125
export default function RootLayout({ children }: { children: React.ReactNode }) {
7226
return (
73-
<html lang="en">
27+
<html lang="ko">
7428
<body>
7529
<Providers>{children}</Providers>
7630
<Toaster position="bottom-center" />

0 commit comments

Comments
 (0)