, 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 */ }
})();
incense & herb shops in san antonio
The exploration of incense and herb shops in San Antonio represents a vital intersection between geographical localization and the universal application of botanical alchemy within the Western Esoteric Tradition. At Terra Incognita Academy, we view these physical repositories of natural materia medica as essential hubs for the modern practitioner. These establishments provide the raw components necessary for theurgy and high ceremonial magic, serving as the bridge between theoretical study and practical application. In the unique cultural landscape of San Antonio, the fusion of traditional folk healing and classical occultism creates a rich tapestry of resources for the serious student. Understanding the provenance and spiritual correspondences of these botanicals is fundamental to mastering the subtle energies required for advanced ritual work and sensory attunement.
For students enrolled in our advanced courses, these local resources offer a laboratory for the soul. The acquisition of specific resins, roots, and herbs is not merely a commercial transaction but a foundational step in the art of sacred fumigation and sympathetic magic. By engaging with these physical elements, practitioners deepen their connection to the spirits of the natural world, as detailed extensively in our comprehensive compendium articles. Our curriculum emphasizes that the quality of one's tools directly influences the efficacy of their spiritual architecture. Whether one is seeking rare frankincense for solar invocations or indigenous sage for purification, these shops provide the tangible substance through which the intangible world manifests its benevolence and guidance to the diligent seeker.
Terra Incognita Academy supports this journey through a diverse array of educational assets, including specialized ebooks and digital downloads that map the planetary correspondences of every botanical agent. We encourage our community to actively participate in our forum discussions to share insights on the most reputable purveyors within the San Antonio region. By integrating the practical wisdom found in our scholarly modules with the physical materials sourced from local herb shops, students can construct a holistic practice that honors both ancient tradition and contemporary accessibility. This synthesis of knowledge ensures that every ritual act is grounded in academic precision and spiritual integrity, fostering a profound environment for transformation and the continued pursuit of esoteric excellence.
Directory Listings
Déjà Vu Esoterica — Déjà Vu Esoterica is an Incense & Herb Shop in San Antonio, United States. Located at 1236 S St Mary's St, San Antonio, TX 78210, the business offers a ded
La India Herbs — La India Herbs is an Incense & Herb Shop in San Antonio, United States, located at 2427 W Commerce St, San Antonio, TX 78207. It offers a dedicated local d
Botanica Awo Osun — Botanica Awo Osun is an Incense & Herb Shop in San Antonio, United States. Located at 4314 W Martin St, San Antonio, TX 78207, it provides a dedicated dest