src/pages/ — Routing rules

Route map

File pathURLlang
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/404bn
en/**/en/…en

Page template

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>

Import depth

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';

Adding a new page

  1. Create src/pages/new-page.astro with lang='bn', currentPath='/new-page/'
  2. Create src/pages/en/new-page.astro with lang='en', currentPath='/en/new-page/'
  3. Add nav links to both BN and EN arrays in src/components/Header.astro
  4. Add footer links to src/components/Footer.astro
  5. Run npm run build — must complete with 0 errors
  6. Run node scripts/functional-test.mjs — all tests must still pass

URL conventions

currentPath usage

currentPath is used by Header to:

  1. Mark the active nav link
  2. Build the language switcher alternate URL (BN→EN prepends /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.