The redirect problem (why this site uses meta-refresh stubs)

GitHub Pages does not support server-side 301 redirects from _redirects the way Netlify does. This repo ships hundreds of _redirects rules for Netlify compatibility, but live GitHub Pages relies on meta-refresh HTML stubs + canonical tags — weaker SEO signal.

Host Real 301 redirects Custom headers
GitHub Pages No (Jekyll redirect plugins limited) Limited
Netlify Yes (_redirects, netlify.toml) Yes
Cloudflare Pages Yes + Workers Yes via Workers

Recommendation: Cloudflare in front of Pages (or migrate origin to Cloudflare Pages) for real 301s.

This is the single biggest reason we maintain dual redirect infrastructure. When we migrated hundreds of blog URLs during a permalink cleanup, Netlify-style _redirects worked in staging but GitHub Pages production required generating HTML stub files with <meta http-equiv="refresh"> and <link rel="canonical">. Google eventually follows these, but link equity transfer is slower and less reliable than a true 301.

For client sites where SEO history matters — established .com.np domains with indexed URLs — do not accept meta-refresh as a long-term strategy. Budget either Netlify, Cloudflare Pages, or Cloudflare Workers rewrite rules in front of GitHub Pages.

GitHub Pages Netlify and Cloudflare static site hosting comparison

Image: Arjan KC media library — Netlify to GitHub Pages migration.

Build & bandwidth

  • GitHub Pages: free for public repos, 10GB/month soft limits
  • Netlify: generous free tier; build minutes capped
  • Cloudflare Pages: unlimited bandwidth on free tier; 500 builds/month

Expanded comparison table

Factor GitHub Pages Netlify Cloudflare Pages
Free bandwidth ~10GB soft cap 100GB/month Unlimited
Build minutes Uses Actions minutes (public repo generous) 300 min/month free 500 builds/month
Custom domain + SSL Yes Yes Yes
Branch previews Manual / Actions workaround Native Native
Forms without backend No Netlify Forms Needs Worker or third party
Edge functions No Edge Functions (limits) Workers (generous free tier)
Nepal agency fit Dev-heavy teams already on GitHub Fast client handoffs High-traffic static + global CDN

Nepali SME brochure sites rarely exceed bandwidth caps on any platform. The decision usually hinges on redirects, previews, and who maintains the repo — not raw traffic volume.

When each wins

  • GitHub Pages: open-source docs, personal sites tied to repo
  • Netlify: agencies wanting fast deploy previews + forms
  • Cloudflare Pages: global static sites + Workers edge logic

GitHub Pages — best when

  • Site source is already in a public GitHub repository
  • Team runs custom CI (GitHub Actions CI/CD guide) and wants artifact control
  • Redirect churn is low or Cloudflare handles rewrites
  • Budget is literally zero beyond domain registration

Limitations we live with on arjankc.com.np: no native _redirects, limited response header control, no built-in form endpoints, preview URLs require custom workflow.

Netlify — best when

  • Agency delivers static sites to non-technical clients who need “connect repo → auto deploy”
  • Contact forms must work without standing up a backend
  • Branch preview links are part of the client approval process
  • _redirects and netlify.toml header rules are first-class

Netlify is the fastest handoff for Kathmandu agencies building campaign landing pages. Watch the 300 build-minute free cap if CI runs full test suites on every push — cache dependencies aggressively.

Cloudflare Pages — best when

  • Global static delivery and unlimited bandwidth matter (media-heavy portfolios, download hubs)
  • You need Workers for geo routing, A/B headers, or API proxies at edge
  • Real 301 redirects without a separate redirect host
  • DNS already on Cloudflare (Cloudflare DNS guide)

Trade-off: build pipeline differs from GitHub Actions Pages flow — plan migration time.

Decision methodology for client projects

We score each project on five factors:

Factor Weight GitHub Pages Netlify CF Pages
SEO redirect needs High Low score High High
Client self-service deploy Medium Low High Medium
Existing GitHub CI investment Medium High Medium Medium
Form handling Medium None Built-in Custom
Long-term cost at scale Low High Medium High

Example: Tourism landing page with 20 URLs and contact form → Netlify. Example: Developer portfolio tied to open-source repo → GitHub Pages + Cloudflare DNS. Example: High-traffic static catalog with geo pricing headers → Cloudflare Pages + Workers.

Headers, security, and compliance

Business sites increasingly need security headers (Content-Security-Policy, HSTS, X-Frame-Options). Platform support varies:

Header control GitHub Pages Netlify Cloudflare Pages
_headers file No Yes Via _headers or Workers
HSTS preload Limited Configurable Configurable
CSP for third-party scripts Manual meta tags _headers Workers or _headers

Nepali e-commerce sites integrating eSewa/Khalti scripts need CSP planning regardless of host — payment gateway domains must be allowlisted. See payment gateway integration.

Hybrid architecture we recommend

For established domains where migrating off GitHub Actions is costly:

  1. Keep GitHub Actions build pipeline
  2. Deploy artifact to GitHub Pages (or R2 + Pages)
  3. Put Cloudflare proxy in front for caching, SSL, WAF
  4. Implement 301 redirects via Cloudflare Bulk Redirects or Workers

This preserves our existing CI/CD investment while fixing the redirect gap without full platform migration.

Cost over 24 months

Scenario GitHub Pages Netlify Pro CF Pages + Pro DNS
Brochure site, low traffic NPR 0 hosting ~USD 19/mo if Pro needed ~USD 20/mo if Pro
Agency with 10 client sites NPR 0 (public repos) Minutes/bandwidth pressure Free tier often sufficient
E-commerce (static catalog) Not suitable alone Forms + redirects help Workers for cart API

Compare against WordPress TCO in WordPress vs static site business TCO. Static hosting wins on ongoing maintenance; WordPress wins on non-technical content editing for some clients.

Migration checklist

Moving between hosts:

  • Export all redirect rules to a single source of truth
  • Verify custom domain SSL provisioning before DNS cutover
  • Test www vs apex resolution
  • Purge old CDN cache after migration
  • Submit updated sitemap in Search Console
  • Monitor 404 rate for 30 days post-migration

For .com.np domains, nameserver changes at register.com.np follow the same timeline regardless of host — plan launches outside peak festival freeze periods if stakeholders are unavailable.

Common agency mistakes

  • Choosing GitHub Pages for a client site with 200+ legacy URLs and no redirect plan
  • Assuming _redirects in repo root works everywhere because Netlify docs say so
  • Skipping preview environments → layout bugs discovered on production
  • Paying for Netlify Pro when Cloudflare free tier covers the actual requirement
  • Ignoring website maintenance after handoff — deploy pipeline breaks when Node/Ruby versions drift