| File path | URL | lang |
|---|---|---|
index.astro | / | bn |
about-us.astro | /about-us/ | bn |
contact.astro | /contact/ | bn |
coverage.astro | /coverage/ | bn |
privacy-policy.astro | /privacy-policy/ | bn |
refund-policy.astro | /refund-policy/ | bn |
blog/index.astro | /blog/ | bn |
blog/[slug].astro | /blog/<slug>/ | bn |
isp-partners/index.astro | /isp-partners/ | bn |
isp-partners/daffodil-online.astro | /isp-partners/daffodil-online/ | bn |
isp-partners/dot-internet.astro | /isp-partners/dot-internet/ | bn |
isp-partners/bdcom.astro | /isp-partners/bdcom/ | bn |
isp-partners/race-online.astro | /isp-partners/race-online/ | bn |
404.astro | /404 | bn |
en/** | /en/… | en |
Every page must follow this structure exactly:
---
import BaseLayout from '../layouts/BaseLayout.astro'; // adjust depth
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
const lang = 'bn'; // or 'en' for EN pages
const currentPath = '/about-us/'; // trailing slash required
---
<BaseLayout
title="Page Title"
description="Meta description"
lang={lang}
canonicalURL="https://kahfinternet.com/about-us/"
>
<Header slot="header" lang={lang} currentPath={currentPath} />
<!-- page sections -->
<Footer slot="footer" lang={lang} />
</BaseLayout>
Pages in src/pages/ (root level):
import BaseLayout from '../layouts/BaseLayout.astro';
import Header from '../components/Header.astro';
Pages in src/pages/en/ (one level deep):
import BaseLayout from '../../layouts/BaseLayout.astro';
import Header from '../../components/Header.astro';
Pages in src/pages/blog/ or src/pages/isp-partners/:
import BaseLayout from '../../layouts/BaseLayout.astro';
import Header from '../../components/Header.astro';
Pages in src/pages/en/blog/:
import BaseLayout from '../../../layouts/BaseLayout.astro';
import Header from '../../../components/Header.astro';
src/pages/new-page.astro with lang='bn', currentPath='/new-page/'src/pages/en/new-page.astro with lang='en', currentPath='/en/new-page/'src/components/Header.astrosrc/components/Footer.astronpm run build — must complete with 0 errorsnode scripts/functional-test.mjs — all tests must still pass/contact/ not /contact/contact/, /about-us/, /blog/, /isp-partners//en/contact/, /en/about-us/, /en/blog/, /en/isp-partners//bn/ — Bengali is at root, no language prefixcurrentPath is used by Header to:
/en; EN→BN strips /en)Always set it to the page’s own URL path (without the domain), e.g. '/about-us/' on the BN about page and '/en/about-us/' on the EN about page.