@@ -152,6 +152,10 @@ async function serveSiteRoutes(requestURL: URL, request: NextRequest) {
152
152
) ;
153
153
}
154
154
155
+ // We use the host/origin from the canonical URL to ensure the links are
156
+ // correctly generated when the site is proxied. e.g. https://proxy.gitbook.com/site/siteId/...
157
+ const siteCanonicalURL = new URL ( siteURLData . canonicalUrl ) ;
158
+
155
159
//
156
160
// Render and serve the content
157
161
//
@@ -163,7 +167,10 @@ async function serveSiteRoutes(requestURL: URL, request: NextRequest) {
163
167
const requestHeaders = new Headers ( request . headers ) ;
164
168
requestHeaders . set ( MiddlewareHeaders . RouteType , routeType ) ;
165
169
requestHeaders . set ( MiddlewareHeaders . URLMode , mode ) ;
166
- requestHeaders . set ( MiddlewareHeaders . SiteURL , `${ siteURL . origin } ${ siteURLData . basePath } ` ) ;
170
+ requestHeaders . set (
171
+ MiddlewareHeaders . SiteURL ,
172
+ `${ siteCanonicalURL . origin } ${ siteURLData . basePath } `
173
+ ) ;
167
174
requestHeaders . set ( MiddlewareHeaders . SiteURLData , JSON . stringify ( siteURLData ) ) ;
168
175
169
176
// Preview of customization/theme
@@ -188,15 +195,15 @@ async function serveSiteRoutes(requestURL: URL, request: NextRequest) {
188
195
requestHeaders . set ( 'x-forwarded-host' , request . nextUrl . host ) ;
189
196
requestHeaders . set ( 'origin' , request . nextUrl . origin ) ;
190
197
191
- const siteURLWithoutProtocol = `${ siteURL . host } ${ siteURLData . basePath } ` ;
198
+ const siteURLWithoutProtocol = `${ siteCanonicalURL . host } ${ siteURLData . basePath } ` ;
192
199
const { pathname, routeType : routeTypeFromPathname } = encodePathInSiteContent (
193
200
siteURLData . pathname
194
201
) ;
195
202
routeType = routeTypeFromPathname ?? routeType ;
196
203
197
204
// We pick only stable data from the siteURL data to prevent re-rendering of
198
205
// the root layout when changing pages..
199
- const stableSiteURLData : Omit < typeof siteURLData , 'pathname' > = {
206
+ const stableSiteURLData : Omit < typeof siteURLData , 'pathname' | 'canonicalUrl' > = {
200
207
site : siteURLData . site ,
201
208
siteSection : siteURLData . siteSection ,
202
209
siteSpace : siteURLData . siteSpace ,
0 commit comments