, 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 */ }
})();
Ex Love back Astrologer in Birmingham is an Astrologer based in Walsall, United Kingdom. Despite the reference to Birmingham in the business name, the verified address places this spiritual service on W Bromwich Rd in Walsall. The business may interest people seeking an astrology-focused setting for personal reflection, relationship-related questions or broader guidance, approached in a benevolent, cooperative and respectful way.
What Visitors Can Expect
An astrologer typically offers consultations centred on astrological interpretation. Visitors may come with questions about relationships, personal choices, life patterns or periods of change. Astrology is best understood as a reflective spiritual practice rather than a substitute for medical, legal, financial or other qualified professional advice.
Those contacting Ex Love back Astrologer in Birmingham can expect to engage with a business categorised specifically as an astrologer. Its name suggests a relationship-oriented focus, but no particular consultation format, method, outcome or service package should be assumed without checking directly. Prospective visitors can use the listed phone number or website to ask how consultations are arranged, whether an appointment is needed and what information they should prepare.
The listing carries a Google rating of 5/5 from 438 reviews. This provides a useful indication of its online rating at the time the directory information was verified, although individual experiences may vary.
Astrology for Newcomers
Astrology is a long-established interpretive tradition that studies the symbolic positions and movements of celestial bodies. In many forms of the practice, an astrologer considers details connected with a person’s birth—often the date, time and place—to create or interpret a birth chart. Different astrological traditions may use different methods, calculations and cultural frameworks.
People often explore astrology as a tool for self-reflection, spiritual enquiry and discussion. A consultation may encourage someone to think about personal tendencies, relationships, timing or future priorities from a symbolic perspective. The process should remain collaborative: the astrologer offers an interpretation, while the visitor considers what feels relevant to their circumstances and retains responsibility for their own decisions.
Newcomers may find it helpful to ask which astrological tradition is used and how a session works. No ethical astrologer can guarantee a particular relationship result or remove the need for mutual consent, communication and respect between the people involved.
An Astrologer in Walsall
Walsall is a town in the West Midlands of the United Kingdom, within the wider urban area associated with Birmingham and surrounding communities. This context helps explain why someone searching online for an “Ex Love back Astrologer in Birmingham” may find a business physically listed in Walsall.
For local residents, the W Bromwich Rd address places the business within Walsall itself. It may also be relevant to people searching for an astrologer in Walsall, as well as those comparing spiritual practitioners across the West Midlands. Visitors travelling from elsewhere should confirm location details directly before setting out, particularly because the city in the verified address differs from the place named in the business title.
Practical Visiting Information
- Business: Ex Love back Astrologer in Birmingham
- Category: Astrologer
- Address: W Bromwich Rd, Walsall B706JW, United Kingdom
- Phone: [+44 7440 247771](tel:+447440247771)
- Website: [https://www.astroloershriram.com/](https://www.astroloershriram.com/)
- Google rating: 5/5 from 438 reviews
- Opening hours: Open 24 hours Monday through Sunday
Although the listed hours indicate 24-hour availability every day, it is sensible to contact the business before visiting to confirm access and consultation arrangements.
Who This Listing May Suit
This astrologer in the United Kingdom may suit adults who are curious about astrology, looking for a spiritually framed conversation or reflecting on relationship themes. It may also appeal to newcomers who want to learn how an astrological consultation is approached. Visitors should engage with realistic expectations, respect the autonomy of everyone concerned and treat astrology as reflective guidance rather than a guaranteed prediction or professional medical or legal service.
Get certified in this practice
Terra Incognita Academy trains the same disciplines these businesses work with. Each certification path bundles its courses at 25% below their individual prices and ends in a verifiable specialist certificate.
The Moon Witch — €161.25. Lunar cycles, timing and intuition: working with the moment instead of against it. Certificate: Certified Moon Witch.
The Delphic Oracle — €45. Prophecy, clear sight and the disciplined voice of the sun. Certificate: Certified Delphic Oracle.
The Angelic Seer — €129. Mastery of angelic perception, revelation and the reading of hidden things. Certificate: Certified Angelic Seer.