kunthawat a33932cbd0 Fix: pages/CSS 404 on URL-encoded links (double-decode broke UTF-8 filenames)
Express already decodes req.path; the extra decodeURIComponent re-decoded
UTF-8 filenames and returned 404 for URL-encoded links (as used by the
original site), so page CSS didn't load and buttons looked unstyled.

Now all 41 pages + all CSS/assets serve 200 via encoded URLs; 0 404.
2026-08-07 20:08:28 +07:00

มิตซูชัยพร สมุทรสาคร — Astro + Express (static site)

เว็บโคลนของ www.mitsuthailand.com (บริษัท มิตซูชัยพร จำกัด ศูนย์มิตซูบิชิ สมุทรสาคร) สร้างเป็น Astro static site ที่ serve ด้วย Node/Express (server.js) — pattern เดียวกับ moreminimore-astroreal ที่ deploy บน EasyPanel ผ่านแล้ว

Content ต้นฉบับ clone ลงมาครบ (หน้า + ภาพ + script) และ URL ทั้งหมดเป็น relative — เปลี่ยนโดเมนได้โดยไม่ต้องแก้ไฟล์


📁 โครงสร้าง

.
├── public/                    ← หน้า HTML ต้นฉบับ (Astro copy ตรง → dist/)
│   ├── index.html             ← หน้าแรก (เหมือนต้นฉบับ)
│   ├── catalog/item/…         ← รายการสินค้า (10 รุ่น + request-form)
│   ├── catalog/keyword/…      ← หน้า keyword
│   ├── catalog/brand|category|e-catalog|search
│   ├── about-us/ contactus/ footer/ rfq/
│   ├── sites/ core/ themes/   ← CSS/JS (mirror โครงสร้างเดิม)
│   └── assets/external/       ← รูปจาก media.yellowpages.co.th (โหลดมาแล้ว)
├── src/
│   ├── layouts/Base.astro     ← Astro layout
│   └── pages/example.astro    ← ตัวอย่างหน้า Astro component
├── server.js                  ← Express: serve dist/ + inject env (port 4321)
├── astro.config.mjs, package.json
├── Dockerfile                 ← node build → node server.js
└── .env.example (ตัวอย่าง env)

🚀 Deploy (Docker / EasyPanel)

docker build -t mitsu-chaiyaporn .
docker run -d -p 8080:4321 mitsu-chaiyaporn

EasyPanel: สร้าง Service แบบ Dockerfile → repo นี้ → container port = 4321 → deploy

⚠️ สำคัญ: ใช้ 4321 (ไม่ใช่ 80) — pattern เดียวกับ moreminimore-astroreal ที่ deploy ผ่านบน EasyPanel แล้ว


🧱 ทำไมหน้า content อยู่ใน public/ (ไม่ใช่ src/pages)

หน้าที่ clone มาเป็น HTML ของ Drupal ดิบ — ถ้าใส่ใน src/pages/ Astro จะพยายาม parse ผ่าน ultrahtml และพัง (HTML ไม่สมบูรณ์ของ Drupal)

เลยวางใน public/ → Astro copy ตรงๆ ไป dist/output เหมือนต้นฉบับ 100%

server.js ใช้ Express serve dist/ + inject environment variables ลง HTML ตอนรัน (แทนที่ ${GA_ID} ${FORM_EMAIL} ${GMAP_EMBED})

อยากแก้หน้าเป็น Astro component: ย้าย HTML ออกจาก public/ → สร้าง src/pages/…astro → build ดู src/pages/example.astro + src/layouts/Base.astro


🔑 Environment Variables

ตัวแปร ค่า default ความหมาย
PORT 4321 port ที่ Express ฟัง
GA_ID (ว่าง=ปิด GA) Google Analytics / GTM ID
FORM_EMAIL mail@mitsuchaiyaporn.com อีเมลรับฟอร์ม RFQ/ติดต่อ (FormSubmit)
GMAP_LAT / GMAP_LNG 13.557…/100.289… พิกัดแผนที่ (แบบฟรี ไม่ต้อง API key)
GMAP_EMBED (จาก lat/lng) URL map เต็ม (override)

EasyPanel: Service → Environment → เพิ่มตัวแปร → Redeploy

docker run --env "GA_ID=G-XXXX" --env "FORM_EMAIL=a@b.com" -p 8080:4321 mitsu-chaiyaporn

📞 ข้อมูลติดต่อ

  • โทร: 034-836-738 ต่อ 9 / 034-422-230 · Line: @823bhcbq · FB: facebook.com/mitsuchaiyaporn
  • ที่อยู่: 923/249 ถนนเอกชัย ต.มหาชัย อ.เมืองสมุทรสาคร 74000
  • เปิด: ศูนย์บริการ จ-ส 08:00-17:00 / ฝ่ายขาย ทุกวัน 08:00-17:00
Description
No description provided
Readme 30 MiB
Languages
HTML 99%
CSS 0.6%
JavaScript 0.3%