Skip to content

Commit ace9b92

Browse files
Add domain redirects for migration to char.com (#3457)
Co-authored-by: yujonglee <yujonglee.dev@gmail.com> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 5aab4d9 commit ace9b92

File tree

1 file changed

+174
-0
lines changed

1 file changed

+174
-0
lines changed

apps/web/netlify.toml

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,180 @@ NODE_VERSION = "22"
1212
[images]
1313
# https://docs.netlify.com/build/image-cdn/overview/#remote-path
1414
remote_images = [
15+
"https://char\\.com/.*",
1516
"https://hyprnote\\.com/.*",
1617
"https://ijoptyyjrfqwaqhyxkxj\\.supabase\\.co/.*",
1718
]
19+
20+
# Domain migration: hyprnote.com -> char.com (301 for SEO)
21+
# Exclude /admin, /app, /api, /webhook, /callback, /auth from redirects
22+
# These paths stay on hyprnote.com without redirect
23+
24+
# Redirect content pages from hyprnote.com to char.com
25+
[[redirects]]
26+
from = "https://hyprnote.com/blog/*"
27+
to = "https://char.com/blog/:splat"
28+
status = 301
29+
force = true
30+
31+
[[redirects]]
32+
from = "https://hyprnote.com/docs/*"
33+
to = "https://char.com/docs/:splat"
34+
status = 301
35+
force = true
36+
37+
[[redirects]]
38+
from = "https://hyprnote.com/changelog/*"
39+
to = "https://char.com/changelog/:splat"
40+
status = 301
41+
force = true
42+
43+
[[redirects]]
44+
from = "https://hyprnote.com/templates/*"
45+
to = "https://char.com/templates/:splat"
46+
status = 301
47+
force = true
48+
49+
[[redirects]]
50+
from = "https://hyprnote.com/gallery/*"
51+
to = "https://char.com/gallery/:splat"
52+
status = 301
53+
force = true
54+
55+
[[redirects]]
56+
from = "https://hyprnote.com/integrations/*"
57+
to = "https://char.com/integrations/:splat"
58+
status = 301
59+
force = true
60+
61+
[[redirects]]
62+
from = "https://hyprnote.com/legal/*"
63+
to = "https://char.com/legal/:splat"
64+
status = 301
65+
force = true
66+
67+
[[redirects]]
68+
from = "https://hyprnote.com/jobs/*"
69+
to = "https://char.com/jobs/:splat"
70+
status = 301
71+
force = true
72+
73+
[[redirects]]
74+
from = "https://hyprnote.com/roadmap/*"
75+
to = "https://char.com/roadmap/:splat"
76+
status = 301
77+
force = true
78+
79+
[[redirects]]
80+
from = "https://hyprnote.com/vs/*"
81+
to = "https://char.com/vs/:splat"
82+
status = 301
83+
force = true
84+
85+
[[redirects]]
86+
from = "https://hyprnote.com/product/*"
87+
to = "https://char.com/product/:splat"
88+
status = 301
89+
force = true
90+
91+
[[redirects]]
92+
from = "https://hyprnote.com/solution/*"
93+
to = "https://char.com/solution/:splat"
94+
status = 301
95+
force = true
96+
97+
[[redirects]]
98+
from = "https://hyprnote.com/company-handbook/*"
99+
to = "https://char.com/company-handbook/:splat"
100+
status = 301
101+
force = true
102+
103+
[[redirects]]
104+
from = "https://hyprnote.com/press-kit/*"
105+
to = "https://char.com/press-kit/:splat"
106+
status = 301
107+
force = true
108+
109+
[[redirects]]
110+
from = "https://hyprnote.com/download"
111+
to = "https://char.com/download"
112+
status = 301
113+
force = true
114+
115+
[[redirects]]
116+
from = "https://hyprnote.com/pricing"
117+
to = "https://char.com/pricing"
118+
status = 301
119+
force = true
120+
121+
[[redirects]]
122+
from = "https://hyprnote.com/about"
123+
to = "https://char.com/about"
124+
status = 301
125+
force = true
126+
127+
[[redirects]]
128+
from = "https://hyprnote.com/opensource"
129+
to = "https://char.com/opensource"
130+
status = 301
131+
force = true
132+
133+
[[redirects]]
134+
from = "https://hyprnote.com/enterprise"
135+
to = "https://char.com/enterprise"
136+
status = 301
137+
force = true
138+
139+
[[redirects]]
140+
from = "https://hyprnote.com/security"
141+
to = "https://char.com/security"
142+
status = 301
143+
force = true
144+
145+
[[redirects]]
146+
from = "https://hyprnote.com/free"
147+
to = "https://char.com/free"
148+
status = 301
149+
force = true
150+
151+
[[redirects]]
152+
from = "https://hyprnote.com/contact"
153+
to = "https://char.com/contact"
154+
status = 301
155+
force = true
156+
157+
# Homepage redirect
158+
[[redirects]]
159+
from = "https://hyprnote.com"
160+
to = "https://char.com"
161+
status = 301
162+
force = true
163+
164+
# Note: www.hyprnote.com and http variants are handled by Netlify's built-in
165+
# www redirect (www -> apex) and HTTPS enforcement. After those redirects,
166+
# the selective rules above will apply to hyprnote.com.
167+
168+
# Secondary domains-> char.com
169+
[[redirects]]
170+
from = "https://getchar.com/*"
171+
to = "https://char.com/:splat"
172+
status = 301
173+
force = true
174+
175+
[[redirects]]
176+
from = "https://www.getchar.com/*"
177+
to = "https://char.com/:splat"
178+
status = 301
179+
force = true
180+
181+
[[redirects]]
182+
from = "http://getchar.com/*"
183+
to = "https://char.com/:splat"
184+
status = 301
185+
force = true
186+
187+
[[redirects]]
188+
from = "http://www.getchar.com/*"
189+
to = "https://char.com/:splat"
190+
status = 301
191+
force = true

0 commit comments

Comments
 (0)