[build] command = "pnpm build:site" publish = "site/dist" ignore = "pnpm turbo query affected --packages site --tasks build --exit-code" # turbo query affected defaults to comparing against the merge-base with main. # On the production branch (site/v10) and main itself, that merge-base is HEAD, # so turbo finds zero changes and skips the build. HEAD~1 compares against the # previous commit instead. We scope this to production and branch-deploy only — # PR previews keep the default merge-base behavior so multi-commit pushes work. [context.production.environment] TURBO_SCM_BASE = "HEAD~1" [context.branch-deploy.environment] TURBO_SCM_BASE = "HEAD~1" # PostHog reverse proxy (ad-blocker bypass) [[redirects]] from = "/ph/static/*" to = "https://us-assets.i.posthog.com/static/:splat" host = "us-assets.i.posthog.com" status = 200 force = true [[redirects]] from = "/ph/*" to = "https://us.i.posthog.com/:splat" host = "us.i.posthog.com" status = 200 force = true # Netlify aliases -> videojs.org [[redirects]] from = "https://videojs.com/*" to = "https://videojs.org/:splat" status = 301 force = true [[redirects]] from = "https://www.videojs.com/*" to = "https://videojs.org/:splat" status = 301 force = true [[redirects]] from = "https://v10.videojs.org/*" to = "https://videojs.org/:splat" status = 301 force = true [[redirects]] from = "https://vjs10-site.netlify.app/*" to = "https://videojs.org/:splat" status = 301 force = true # Redirect old theme demo pages to home [[redirects]] from = "/city" to = "/" status = 308 [[redirects]] from = "/fantasy" to = "/" status = 308 [[redirects]] from = "/forest" to = "/" status = 308 [[redirects]] from = "/sea" to = "/" status = 308 # Redirect old v8 guides to legacy site [[redirects]] from = "/guides" to = "https://legacy.videojs.org/guides" status = 308 [[redirects]] from = "/guides/*" to = "https://legacy.videojs.org/guides/:splat" status = 308 # Redirect old Tumblr blog post URLs (migrated from videojs.tumblr.com) # Each post had a numeric Tumblr ID; URLs may include an optional slug after the ID. [[redirects]] from = "/blog/post/35888462908/*" to = "/blog/new-videojs-site-now-with-more-html5" status = 308 [[redirects]] from = "/blog/post/35888462908" to = "/blog/new-videojs-site-now-with-more-html5" status = 308 [[redirects]] from = "/blog/post/35888302484/*" to = "/blog/videojs-is-ie9-compatible" status = 308 [[redirects]] from = "/blog/post/35888302484" to = "/blog/videojs-is-ie9-compatible" status = 308 [[redirects]] from = "/blog/post/35888138568/*" to = "/blog/ipad-iphone-video-poster-fix-bonus-javascript-placement-fix" status = 308 [[redirects]] from = "/blog/post/35888138568" to = "/blog/ipad-iphone-video-poster-fix-bonus-javascript-placement-fix" status = 308 [[redirects]] from = "/blog/post/35887879903/*" to = "/blog/facebook-adds-html5-video" status = 308 [[redirects]] from = "/blog/post/35887879903" to = "/blog/facebook-adds-html5-video" status = 308 [[redirects]] from = "/blog/post/35887731208/*" to = "/blog/version-1-1-3-release" status = 308 [[redirects]] from = "/blog/post/35887731208" to = "/blog/version-1-1-3-release" status = 308 [[redirects]] from = "/blog/post/35887428303/*" to = "/blog/1-1-5-release-subtitles-using-track-android-fix-more" status = 308 [[redirects]] from = "/blog/post/35887428303" to = "/blog/1-1-5-release-subtitles-using-track-android-fix-more" status = 308 [[redirects]] from = "/blog/post/35887203978/*" to = "/blog/make-sites-serve-you-html5-video-in-safari" status = 308 [[redirects]] from = "/blog/post/35887203978" to = "/blog/make-sites-serve-you-html5-video-in-safari" status = 308 [[redirects]] from = "/blog/post/35887003151/*" to = "/blog/2-0-0-release-behaviors-fallback-apis-and-more" status = 308 [[redirects]] from = "/blog/post/35887003151" to = "/blog/2-0-0-release-behaviors-fallback-apis-and-more" status = 308 [[redirects]] from = "/blog/post/35886359508/*" to = "/blog/2-0-2-release-subtitle-optimization-safari-on-leopard-fs-fix" status = 308 [[redirects]] from = "/blog/post/35886359508" to = "/blog/2-0-2-release-subtitle-optimization-safari-on-leopard-fs-fix" status = 308 [[redirects]] from = "/blog/post/35886098711/*" to = "/blog/html5-video-google-maps-mashup" status = 308 [[redirects]] from = "/blog/post/35886098711" to = "/blog/html5-video-google-maps-mashup" status = 308 [[redirects]] from = "/blog/post/35885839763/*" to = "/blog/over-50-of-web-users-now-support-html5-video" status = 308 [[redirects]] from = "/blog/post/35885839763" to = "/blog/over-50-of-web-users-now-support-html5-video" status = 308 [[redirects]] from = "/blog/post/35885627647/*" to = "/blog/google-is-dropping-h-264-from-chrome" status = 308 [[redirects]] from = "/blog/post/35885627647" to = "/blog/google-is-dropping-h-264-from-chrome" status = 308 [[redirects]] from = "/blog/post/35885444487/*" to = "/blog/apple-adds-airplay-to-mobile-safari" status = 308 [[redirects]] from = "/blog/post/35885444487" to = "/blog/apple-adds-airplay-to-mobile-safari" status = 308 [[redirects]] from = "/blog/post/35885249818/*" to = "/blog/new-mpeg-la-webm-vp8-patent-pool" status = 308 [[redirects]] from = "/blog/post/35885249818" to = "/blog/new-mpeg-la-webm-vp8-patent-pool" status = 308 [[redirects]] from = "/blog/post/35885081376/*" to = "/blog/how-are-you-using-video-js" status = 308 [[redirects]] from = "/blog/post/35885081376" to = "/blog/how-are-you-using-video-js" status = 308 [[redirects]] from = "/blog/post/35884942031/*" to = "/blog/lynda-com-html5-video-tutorial-released" status = 308 [[redirects]] from = "/blog/post/35884942031" to = "/blog/lynda-com-html5-video-tutorial-released" status = 308 [[redirects]] from = "/blog/post/35884704314/*" to = "/blog/video-js-version-3-0" status = 308 [[redirects]] from = "/blog/post/35884704314" to = "/blog/video-js-version-3-0" status = 308 [[redirects]] from = "/blog/post/35884369527/*" to = "/blog/version-3-1-update" status = 308 [[redirects]] from = "/blog/post/35884369527" to = "/blog/version-3-1-update" status = 308 [[redirects]] from = "/blog/post/35883671470/*" to = "/blog/version-3-2-update" status = 308 [[redirects]] from = "/blog/post/35883671470" to = "/blog/version-3-2-update" status = 308 [[redirects]] from = "/blog/post/35666994917/*" to = "/blog/brightcove-acquires-zencoder" status = 308 [[redirects]] from = "/blog/post/35666994917" to = "/blog/brightcove-acquires-zencoder" status = 308 [[redirects]] from = "/blog/post/35788231775/*" to = "/blog/site-and-support-updates" status = 308 [[redirects]] from = "/blog/post/35788231775" to = "/blog/site-and-support-updates" status = 308 [[redirects]] from = "/blog/post/49797985868/*" to = "/blog/repo-moved" status = 308 [[redirects]] from = "/blog/post/49797985868" to = "/blog/repo-moved" status = 308 [[redirects]] from = "/blog/post/50021214078/*" to = "/blog/video-js-4-0-now-available" status = 308 [[redirects]] from = "/blog/post/50021214078" to = "/blog/video-js-4-0-now-available" status = 308 [[redirects]] from = "/blog/post/54136228059/*" to = "/blog/video-js-4-1-0-released" status = 308 [[redirects]] from = "/blog/post/54136228059" to = "/blog/video-js-4-1-0-released" status = 308 [[redirects]] from = "/blog/post/55553002104/*" to = "/blog/new-player-skin-designer-for-video-js" status = 308 [[redirects]] from = "/blog/post/55553002104" to = "/blog/new-player-skin-designer-for-video-js" status = 308 [[redirects]] from = "/blog/post/57828375480/*" to = "/blog/hiding-and-showing-video-player-controls" status = 308 [[redirects]] from = "/blog/post/57828375480" to = "/blog/hiding-and-showing-video-player-controls" status = 308 [[redirects]] from = "/blog/post/60471080014/*" to = "/blog/video-js-4-2-0-released-rtmp-css-designer-and-stability" status = 308 [[redirects]] from = "/blog/post/60471080014" to = "/blog/video-js-4-2-0-released-rtmp-css-designer-and-stability" status = 308 [[redirects]] from = "/blog/post/61309840958/*" to = "/blog/unauthorized-modification-of-video-js-cdn-files" status = 308 [[redirects]] from = "/blog/post/61309840958" to = "/blog/unauthorized-modification-of-video-js-cdn-files" status = 308 [[redirects]] from = "/blog/post/61644484835/*" to = "/blog/running-video-js-unit-tests-in-real-browsers-with-karma" status = 308 [[redirects]] from = "/blog/post/61644484835" to = "/blog/running-video-js-unit-tests-in-real-browsers-with-karma" status = 308 [[redirects]] from = "/blog/post/66131645152/*" to = "/blog/the-guardian-uses-video-js-in-feature-article" status = 308 [[redirects]] from = "/blog/post/66131645152" to = "/blog/the-guardian-uses-video-js-in-feature-article" status = 308 [[redirects]] from = "/blog/post/66138384272/*" to = "/blog/video-js-version-4-3-0-released-w-shiny-new-api-docs" status = 308 [[redirects]] from = "/blog/post/66138384272" to = "/blog/video-js-version-4-3-0-released-w-shiny-new-api-docs" status = 308 [[redirects]] from = "/blog/post/77214236892/*" to = "/blog/video-js-version-4-4-0-released-now-supporting-requirejs-and-browserify" status = 308 [[redirects]] from = "/blog/post/77214236892" to = "/blog/video-js-version-4-4-0-released-now-supporting-requirejs-and-browserify" status = 308 [[redirects]] from = "/blog/post/80918861872/*" to = "/blog/video-js-version-4-5-0-released-nothing-to-see-here-move-along" status = 308 [[redirects]] from = "/blog/post/80918861872" to = "/blog/video-js-version-4-5-0-released-nothing-to-see-here-move-along" status = 308 [[redirects]] from = "/blog/post/86341869931/*" to = "/blog/video-js-version-4-6-0-released-it-s-been-a-productive-month" status = 308 [[redirects]] from = "/blog/post/86341869931" to = "/blog/video-js-version-4-6-0-released-it-s-been-a-productive-month" status = 308 [[redirects]] from = "/blog/post/92536319027/*" to = "/blog/dash-everywhere-ish-hack-project" status = 308 [[redirects]] from = "/blog/post/92536319027" to = "/blog/dash-everywhere-ish-hack-project" status = 308 [[redirects]] from = "/blog/post/93989313276/*" to = "/blog/video-js-v4-7-0-built-mostly-by-new-contributors-also-google-chooses-video-js" status = 308 [[redirects]] from = "/blog/post/93989313276" to = "/blog/video-js-v4-7-0-built-mostly-by-new-contributors-also-google-chooses-video-js" status = 308 [[redirects]] from = "/blog/post/96564061826/*" to = "/blog/video-js-4-8-0-released-prost" status = 308 [[redirects]] from = "/blog/post/96564061826" to = "/blog/video-js-4-8-0-released-prost" status = 308 [[redirects]] from = "/blog/post/99014232526/*" to = "/blog/video-js-4-9-now-can-join-the-party" status = 308 [[redirects]] from = "/blog/post/99014232526" to = "/blog/video-js-4-9-now-can-join-the-party" status = 308 [[redirects]] from = "/blog/post/111390879116/*" to = "/blog/video-js-4-12-the-last-of-the-4-minors" status = 308 [[redirects]] from = "/blog/post/111390879116" to = "/blog/video-js-4-12-the-last-of-the-4-minors" status = 308 [[redirects]] from = "/blog/post/121061752226/*" to = "/blog/it-s-here-5-0-release-candidates" status = 308 [[redirects]] from = "/blog/post/121061752226" to = "/blog/it-s-here-5-0-release-candidates" status = 308 [[redirects]] from = "/blog/post/130143694631/*" to = "/blog/video-js-5-the-only-thing-that's-changed-is-everything-except-for-like-3-things-that-didn-t-including-the-name" status = 308 [[redirects]] from = "/blog/post/130143694631" to = "/blog/video-js-5-the-only-thing-that's-changed-is-everything-except-for-like-3-things-that-didn-t-including-the-name" status = 308 # Redirect old tags pages to blog (no tag filtering in v10) [[redirects]] from = "/tags" to = "/blog" status = 307 [[redirects]] from = "/tags/*" to = "/blog" status = 307 # Redirect old support URL to new page [[redirects]] from = "/html5-video-support" to = "/support" status = 307 # Misc v8 stragglers [[redirects]] from = "/getting-started" to = "/docs" status = 307 [[redirects]] from = "/advanced" to = "/docs" status = 307 [[redirects]] from = "/plugins" to = "/docs" status = 307