1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <!-- Google Consent Mode v2 â default deny until user opts in (global) --> 7
7<script> 8 window.dataLayer = window.dataLayer || []; 9 function gtag(){dataLayer.push(arguments);} 10 window.gtag = gtag; 11 gtag('consent', 'default', { 12 'ad_storage': 'denied', 13 'ad_user_data': 'denied', 14 'ad_personalization': 'denied', 15 'analytics_storage': 'denied', 16 'personalization_storage': 'denied', 17 'functionality_storage': 'granted', 18 'security_storage': 'granted', 19 'wait_for_update': 500 20 }); 21 </script>
21 22 <!-- Google Tag Manager --> 23
23<script>
vendor: 343 bytes, lines 23-27
23(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 24 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 25 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 26 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 27 })(window,document,'script','dataLayer','
27GTM-528P5DF3
vendor: 3 bytes, line 27
27');
27</script>
27 28 <!-- End Google Tag Manager --> 29 <title>Ghost Route â¦</title> 30 <meta name="description" content="Stop losing visitors to 404s. Ghost Route uses AI to rescue broken-page traffic in real time â before anyone bounces."> 31 <meta name="author" content="Ghost Route" /> 32 <meta name="keywords" content="404 recovery, broken page redirect, AI URL matching, visitor recovery, 404 rescue, redirect management, broken page recovery, AI 404 redirect" /> 33 <link rel="canonical" href="https://ghostroute.ai" /> 34 <link rel="preconnect" href="https://fonts.googleapis.com" /> 35 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 36 <link rel="preconnect" href="https://ipapi.co" /> 37 <link rel="preconnect" href="https://kncrzgjbhxoqruhabluo.supabase.co" /> 38 <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" onload="this.onload=null;this.rel='stylesheet'" /> 39 <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" /></noscript> 40 <link rel="icon" type="image/png" href="/favicon-96x96.png"> 41 <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 42 <link rel="shortcut icon" href="/favicon.ico" /> 43 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 44 <meta name="apple-mobile-web-app-title" content="Ghost Route" /> 45 <link rel="manifest" href="/site.webmanifest" /> 46 47 <meta property="og:type" content="website" /> 48 49 50 <meta property="og:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/m9pRocvDzLP0v2nT7SIDvqW7Ozz2/social-images/social-1772386996073-Screenshot_2026-03-01_at_11.43.02_AM.webp"> 51 52 <meta name="twitter:card" content="summary_large_image" /> 53 54 55 <meta name="twitter:image" content="https://storage.googleapis.com/gpt-engineer-file-uploads/m9pRocvDzLP0v2nT7SIDvqW7Ozz2/social-images/social-1772386996073-Screenshot_2026-03-01_at_11.43.02_AM.webp"> 56 57 58
58<script> 59 (function(){ 60 var hostname = window.location.hostname; 61 var pathname = window.location.pathname; 62 var search = window.location.search; 63 64 var isOwnDomain = hostname === 'ghostroute.ai' || hostname === 'www.ghostroute.ai'; 65 var appRoutes = ['/dashboard','/logs','/manual-mapping','/export','/patterns','/alerts','/settings','/account','/admin','/super-admin','/forgot-password','/reset-password','/login','/signup']; 66 var publicRoutes = ['/blog','/contact','/pricing','/privacy','/terms','/cookies','/waitlist','/about','/demo','/help','/support','/sales']; 67 var isAppRoute = appRoutes.some(function(r){ return pathname === r || pathname.startsWith(r + '/'); }); 68 var isPublicRoute = publicRoutes.some(function(r){ return pathname === r || pathname.startsWith(r + '/'); }); 69 var isLovablePreview = hostname.indexOf('lovable.app') !== -1 || hostname.indexOf('lovable.dev') !== -1; 70 var hasLovableToken = search.indexOf('__lovable_token') !== -1; 71 var hasForceHideBadge = search.indexOf('forceHideBadge') !== -1; 72 var isHtmlFile = pathname.endsWith('.html'); 73 74 if (isOwnDomain && !isAppRoute && !isPublicRoute && !isLovablePreview && !hasLovableToken && !hasForceHideBadge && !isHtmlFile) { 75 var s = document.createElement('script'); 76 s.defer = true; 77 s.src = 'https://ghostroute.lovable.app/agent.js?v=20260403'; 78 s.dataset.siteId = '33d60f36-6292-4d1d-8336-4fe0acaa5c99'; 79 s.dataset.apiKey = 'd583a53e-f593-40d6-80c9-ed9e0199ceea'; 80 s.dataset.apiUrl = 'https://kncrzgjbhxoqruhabluo.supabase.co/functions/v1/public-redirect'; 81 document.head.appendChild(s); 82 } 83 })(); 84 </script>
84 85 86 87 88 89 90 91 92 93 <meta property="og:title" content="Ghost Route â AI-Powered 404 Rescue for Websites"> 94 <meta name="twitter:title" content="Ghost Route â AI-Powered 404 Rescue for Websites"> 95 <meta property="og:description" content="Ghost Route silently catches every 404 on your website and redirects visitors to the right page using AI â in under a second. Free to start, no developer needed."> 96 <meta name="twitter:description" content="Ghost Route silently catches every 404 on your website and redirects visitors to the right page using AI â in under a second. Free to start, no developer needed."> 97 <meta property="og:url" content="https://ghostroute.ai"> 98
98<script type="module" crossorigin src="/assets/index-Bgu4swdm.js"></script>
98 99 <link rel="modulepreload" crossorigin href="/assets/vendor-D1Nne4sQ.js"> 100 <link rel="modulepreload" crossorigin href="/assets/query-BGOaZIr3.js"> 101 <link rel="modulepreload" crossorigin href="/assets/ui-D0rgk3tM.js"> 102 <link rel="modulepreload" crossorigin href="/assets/charts-B3MsXOwe.js"> 103 <link rel="stylesheet" crossorigin href="/assets/index-Rqg4M7hM.css">
104<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
104<script defer src="/__l5e/events.1718a1eacac7ff3a.js" data-artifact-kind="dwl_content_hash" data-artifact-id="2c1a584c373d5fe431a2d9bf175fecda3a8d2965d7164ac739cf67e9ea43b131" data-commit-sha="b8c527926428465480996790fcb88259fa68e344" data-context-token="v1.eyJwcm9qZWN0X2lkIjoibG92cF81Nm1uODdocWNnOWVrOTNkdDBraDc4c3ZlZCIsImFydGlmYWN0X2tpbmQiOiJkd2xfY29udGVudF9oYXNoIiwiYXJ0aWZhY3RfaWQiOiIyYzFhNTg0YzM3M2Q1ZmU0MzFhMmQ5YmYxNzVmZWNkYTNhOGQyOTY1ZDcxNjRhYzczOWNmNjdlOWVhNDNiMTMxIiwiY29tbWl0X3NoYSI6ImI4YzUyNzkyNjQyODQ2NTQ4MDk5Njc5MGZjYjg4MjU5ZmE2OGUzNDQiLCJleHAiOjE3OTQxNzUyODN9.vy4UYKzpNXsFXo35IvxLk-fiY6Gfob9lumJ4-OK0nDQ"></script>
104</head> 105 106 <body> 107 <a href="#main-content" class="skip-link">Skip to main content</a> 108 <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 108-109
108 109 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
109GTM-528P5DF3
vendor: 91 bytes, lines 109-111
109" 110 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 111
111<!-- End Google Tag Manager (noscript) --> 112 <div id="root"></div> 113 </body> 114</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.