guardian angel invocation
Content tagged with "guardian angel invocation" across Terra Incognita Academy — courses, ebooks, articles, and discussions.
, i.e. AFTER this script executes, so the query returned null // on every prerendered page and the classifier stamped // "noindex, follow" into the DOM of real, unique pages. The prerenderer // now stamps data-prerendered="1" on , which exists before any // script runs. The canonical check is kept as a secondary guard. var docEl = document.documentElement; if (docEl && docEl.getAttribute('data-prerendered') === '1') return; if (document.querySelector('link[rel="canonical"]')) return; var origin = 'https://terraincognitaacademy.com'; var path = location.pathname || '/'; var malformedAbsoluteTarget = null; try { path = decodeURIComponent(path); } catch (_) {} path = path.replace(/^\/+https?:\/+((www\.)?terraincognitaacademy\.com)(?=\/|$)/i, function(){ malformedAbsoluteTarget = true; return ''; }); if (!path) path = '/'; if (path.length > 1) path = path.replace(/\/+$/, ''); var canonical = origin + path; // Routes that must NEVER be indexed (private/auth-gated/redirect aliases). var NOINDEX_PREFIXES = [ '/spell-launcher','/instructor/apply','/course-finder','/dashboard','/admin', '/checkout','/cart','/auth','/login','/signup','/messages','/profile/edit', '/profile/settings','/settings','/student','/achievements','/my-invoices', '/forum/new-topic','/forum/bookmarks','/instructor/earnings','/instructor/analytics', '/instructor/courses','/instructor/content-library','/category-management', '/gift-success','/claim-gift','/shop/success','/shop/download','/install','/search', '/spirit-alignment-codex/result','/directory/manage','/directory/search' ]; // Legacy aliases that must canonicalize to current URLs (and stay noindex on the alias itself). var REDIRECT_MAP = { '/course-finder': '/spirit-alignment-codex', '/your-path-assistant': '/spirit-alignment-codex', '/spiritual-path-assistant': '/spirit-alignment-codex', '/spirit-codex': '/spirit-alignment-codex', '/codex': '/spirit-alignment-codex', '/spirit-encyclopedia': '/encyclopedia', '/ritual-design-system': '/rituals', '/blog-posts': '/blog', '/power-points': '/spiritual-world', '/temple-teachings': '/forum', '/affiliate': '/ambassador', '/affiliates': '/ambassador', '/affiliate/register': '/ambassador', '/category/free': '/courses/category/free-spiritual-courses', '/spiritual-development/usa': '/spiritual-development/united-states', '/spiritual-development/uk': '/spiritual-development/united-kingdom', '/spiritual-development/uae': '/spiritual-development/united-arab-emirates' }; // Hub/listing routes that share filesystem space with item children // (e.g. /courses cannot exist as a static file because dist/courses/ // is a directory). Inject SEO synchronously so Googlebot and SPA // visitors get the correct title/description even when served from // the root SPA fallback shell. var HUB_SEO = { '/courses': { title: 'Occult Courses Online | Terra Incognita Academy', description: 'Learn witchcraft, ceremonial magic, hermeticism and chaos magick with 300+ occult courses online. Expert instructors, lifetime access. Start today.' }, '/shop': { title: 'Grimoires & Occult PDF Books | Terra Incognita Academy', description: 'Download grimoires, occult books and esoteric PDFs: Goetia, Solomonic magic, Book of Shadows, angelic and planetary rituals. Instant delivery, lifetime access.' }, '/bundles': { title: 'Occult Course Bundles | Terra Incognita Academy', description: 'Save up to 50% on occult course bundles: witchcraft, ceremonial magic, hermeticism and evocation packages. Lifetime access, one payment.' }, '/forum': { title: 'Witchcraft & Occult Forum | Terra Incognita Academy', description: 'Join our witchcraft forum and occult community. Discuss grimoires, rituals, evocation, meditation and esoteric practice with practitioners worldwide.' }, '/blog': { title: 'Blog — Spiritual Teachings | Terra Incognita Academy', description: 'Read in-depth articles on spirit work, ritual practice, grimoire study and consciousness development from Terra Incognita Academy instructors.' }, '/encyclopedia': { title: 'Spirit Compatibility Guide | Terra Incognita Academy', description: 'Explore the encyclopedia of spirits, domains, archetypes and intents. A comprehensive reference for serious practitioners at Terra Incognita Academy.' }, '/rituals': { title: 'Ritual Hub — Blueprints | Terra Incognita Academy', description: 'Design personalized rituals with the Terra Incognita Academy Ritual Hub. Step-by-step blueprints for spirit work, devotion and transformation.' }, '/glossary': { title: 'Spiritual & Magical Glossary | Terra Incognita Academy', description: 'Definitions of key spiritual, magical and esoteric terms used across courses, grimoires and rituals at Terra Incognita Academy.' }, '/spiritual-world': { title: 'Sacred Geography & Power Points | Terra Incognita', description: 'Explore the spiritual world: power points, sacred sites and the geography of spirit. Curated by Terra Incognita Academy.' }, '/instructors': { title: 'Meet Our Teachers | Terra Incognita Academy', description: 'Meet the experienced spiritual instructors of Terra Incognita Academy. Practitioners, scholars and guides leading our courses.' }, '/pillars': { title: 'Pillar Hubs — Goetia, Angels & Deities | Terra Incognita Academy', description: 'Explore our pillar hubs: the 72 Goetic demons, the Shem HaMephorash angels, the Olympic spirits and the Norse, Celtic and Greek deities, with linked courses, grimoires and articles.' }, '/about': { title: 'About Us — Our Mission | Terra Incognita Academy', description: 'Learn about Terra Incognita Academy: our mission to deliver rigorous, benevolent spiritual education for serious modern practitioners.' } }; // Indexable-from-the-shell allowlist. // // IMPORTANT: this list only ever applies to a URL that has NO prerendered // HTML file (the script early-returns when a canonical is already present). // A URL served by the generic shell has the homepage title and no unique // content, so declaring it indexable produced thousands of identical // "index,follow" pages — exactly the "Duplicate: Google chose a different // canonical" and "Crawled - currently not indexed" reports. // // Therefore ONLY stable hub/static routes stay indexable here. Every // item-level route (listings, cities, tags, topics, courses, products, // profiles, certificates, …) must earn indexability by having a real // prerendered page; without one it is noindex,follow. var INDEX_PATTERNS = [ /^\/$/, /^\/courses$/, /^\/shop$/, /^\/bundles$/, /^\/ebook-bundles$/, /^\/forum$/, /^\/blog$/, /^\/encyclopedia$/, /^\/encyclopedia\/spirits$/, /^\/spiritual-world$/, /^\/spirit-alignment-codex$/, /^\/(theurgy|evocation|spirit-guides|spirit-communication)$/, /^\/answers$/, /^\/glossary$/, /^\/compendium$/, /^\/rituals$/, /^\/ritual-builder$/, /^\/about$/, /^\/about\/faculty$/, /^\/contact$/, /^\/ambassador$/, /^\/instructors$/, /^\/free-ebook$/, /^\/members$/, /^\/declaration$/, /^\/experienced-practitioners$/, /^\/become-instructor$/, /^\/standing-faq$/, /^\/platform$/, /^\/sitemap$/, /^\/rss$/, /^\/academy-transfer$/, /^\/accredited-spiritual-program$/, /^\/updates$/, /^\/[a-z0-9-]+-school$/, /^\/certified-paths$/, /^\/(infernal-healer|power-invoker|wealth-architect|infernal-strategist|master-of-knowledge|shadow-alchemist|master-of-influence|infernal-lover|infernal-protector|pathbreaker|infernal-seer|infernal-sovereign)$/, /^\/privacy-policy$/, /^\/terms-of-service$/, /^\/cookie-policy$/, /^\/refund-policy$/, /^\/disclaimer$/, /^\/copyright$/, /^\/verify-certificate$/, /^\/tags$/, /^\/pillars$/, /^\/directory$/, /^\/directory\/pricing$/ ]; var isNoindex = NOINDEX_PREFIXES.some(function(p){ return path === p || path.indexOf(p + '/') === 0; }); var redirectTarget = REDIRECT_MAP[path]; // Pattern-based legacy redirects (must mirror the Cloudflare worker // so direct browser hits behave identically to crawler hits). if (!redirectTarget) { var m; if ((m = path.match(/^\/shop\/product\/(.+)$/))) redirectTarget = '/shop/' + m[1]; else if ((m = path.match(/^\/category\/(.+)$/))) redirectTarget = '/courses/category/' + m[1]; else if ((m = path.match(/^\/bundle\/(.+)$/))) redirectTarget = '/bundles/' + m[1]; else if ((m = path.match(/^\/profile\/(?!settings|edit)([^/]+)$/))) redirectTarget = '/u/' + m[1]; } if (redirectTarget) { canonical = origin + redirectTarget; isNoindex = true; // alias itself is not indexable // Actually navigate real visitors (bots see canonical+noindex above). // Lovable hosting has no edge redirects, so we do it client-side. try { var ua = (navigator && navigator.userAgent) || ''; var isBot = /bot|crawler|spider|crawling|facebookexternalhit|slurp|bingpreview|linkedinbot|whatsapp|telegram/i.test(ua); if (!isBot) { window.location.replace(redirectTarget + (window.location.search || '') + (window.location.hash || '')); } } catch (e) {} } var isKnownGood = !isNoindex && INDEX_PATTERNS.some(function(re){ return re.test(path); }); var link = document.createElement('link'); link.setAttribute('rel', 'canonical'); link.setAttribute('href', canonical); document.head.appendChild(link); var ogUrl = document.createElement('meta'); ogUrl.setAttribute('property', 'og:url'); ogUrl.setAttribute('content', canonical); document.head.appendChild(ogUrl); var twUrl = document.createElement('meta'); twUrl.setAttribute('name', 'twitter:url'); twUrl.setAttribute('content', canonical); document.head.appendChild(twUrl); // Apply final robots state synchronously. Known public routes get index; // private routes, redirect aliases, and unknown paths get noindex. var existing = document.querySelectorAll('meta[name="robots"], meta[name="googlebot"]'); for (var i = 0; i < existing.length; i++) existing[i].parentNode.removeChild(existing[i]); var robotsValue = isKnownGood ? 'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' : 'noindex, follow'; var robots = document.createElement('meta'); robots.setAttribute('name', 'robots'); robots.setAttribute('content', robotsValue); document.head.appendChild(robots); var gbot = document.createElement('meta'); gbot.setAttribute('name', 'googlebot'); gbot.setAttribute('content', robotsValue); document.head.appendChild(gbot); var cleanupSeoDuplicates = function(){ var selectors = ['title', 'meta[name="title"]', 'meta[name="description"]']; for (var s = 0; s < selectors.length; s++) { var nodes = document.head.querySelectorAll(selectors[s]); for (var n = 0; n < nodes.length - 1; n++) { if (nodes[n] && nodes[n].parentNode) nodes[n].parentNode.removeChild(nodes[n]); } } }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', cleanupSeoDuplicates, { once: true }); } else { cleanupSeoDuplicates(); } setTimeout(cleanupSeoDuplicates, 0); // Synchronous hub-route SEO injection. Hub routes (e.g. /courses, // /shop) cannot have prerendered extensionless static files because // their slug exists as a directory (dist/courses/foo.html). Inject // unique title + description here so Googlebot's first-paint scan // sees per-route SEO instead of the homepage shell defaults. var hub = HUB_SEO[path]; if (hub) { try { var existingTitles = document.head.querySelectorAll('title'); for (var t = 0; t < existingTitles.length; t++) existingTitles[t].parentNode.removeChild(existingTitles[t]); var titleEl = document.createElement('title'); titleEl.textContent = hub.title; document.head.appendChild(titleEl); var metaSelectors = ['meta[name="title"]','meta[name="description"]','meta[property="og:title"]','meta[property="og:description"]','meta[name="twitter:title"]','meta[name="twitter:description"]']; for (var ms = 0; ms < metaSelectors.length; ms++) { var existingMetas = document.head.querySelectorAll(metaSelectors[ms]); for (var em = 0; em < existingMetas.length; em++) existingMetas[em].parentNode.removeChild(existingMetas[em]); } function appendMeta(attr, name, content){ var el = document.createElement('meta'); el.setAttribute(attr, name); el.setAttribute('content', content); document.head.appendChild(el); } appendMeta('name', 'title', hub.title); appendMeta('name', 'description', hub.description); appendMeta('property', 'og:title', hub.title); appendMeta('property', 'og:description', hub.description); appendMeta('name', 'twitter:title', hub.title); appendMeta('name', 'twitter:description', hub.description); } catch(_) {} } // For redirect aliases, perform a client-side hard redirect after canonical // is in place so users actually land on the canonical URL. if (malformedAbsoluteTarget) { try { location.replace(canonical + location.search + location.hash); } catch(_) {} } if (redirectTarget && redirectTarget !== path) { try { location.replace(origin + redirectTarget + location.search + location.hash); } catch(_) {} } } catch (e) { /* noop */ } })();