3 שלב הבסיס

GitHub Pages — אתרים חינמיים

בפרק הזה תקימו אתר סטטי חינמי ישירות מ-GitHub repository. תלמדו את שני מצבי הפרסום — מ-branch ומ-Actions — תחברו דומיין מותאם עם HTTPS, תגדירו SEO בסיסי ודף 404 מותאם, ותבינו מתי Pages מתאים ומתי כדאי לעבור לפלטפורמה אחרת. בסוף הפרק יהיה לכם אתר חי באינטרנט עם פרסום אוטומטי על כל push.

מה יהיה לך בסוף הפרק הזה
מה תוכלו לעשות בסוף הפרק הזה
דרישות קדם
חוט הפרויקט

בפרק 2 למדנו לעבוד עם GitHub CLI מהטרמינל — aliases, API, סקריפטים. בפרק 1 בנינו CI/CD pipeline עם GitHub Actions. בפרק הזה נשלב את שניהם: נשתמש ב-Actions כדי לפרסם אתר סטטי עם GitHub Pages — דומיין מותאם, HTTPS, ו-SEO. בפרק הבא (פרק 4 — Codespaces) נקים סביבת פיתוח בענן שבה נוכל לערוך את האתר מכל מקום, בלי להתקין שום דבר.

מילון מונחים
GitHub Pages
שירות אירוח חינמי של GitHub לאתרים סטטיים — HTML, CSS, JS ישירות מ-repository. זמין לכל ריפוזיטורי ציבורי בחינם.
Static Site
אתר שמורכב מקבצים קבועים (HTML/CSS/JS) ללא עיבוד בצד השרת. הדפדפן מקבל את הקבצים כמו שהם — אין PHP, Node.js, או Python שרצים.
Jekyll
מנוע בניית אתרים סטטיים (Ruby) מובנה ב-GitHub Pages — ממיר Markdown ל-HTML עם תמיכה ב-themes, Liquid templating, ו-front matter.
.nojekyll
קובץ ריק בשורש הריפו שמורה ל-GitHub Pages לדלג על עיבוד Jekyll. חיוני כשמשתמשים ב-framework אחר או ב-HTML ידני.
CNAME Record
רשומת DNS שמצביעה subdomain לכתובת אחרת — משמש לחיבור www.example.com ל-username.github.io.
A Record
רשומת DNS שמצביעה דומיין לכתובת IP ספציפית — משמש לחיבור apex domain (ללא www) ל-GitHub Pages.
HTTPS / TLS
הצפנת תעבורה בין הדפדפן לשרת. GitHub Pages מספק תעודת HTTPS אוטומטית וחינמית דרך Let's Encrypt.
Let's Encrypt
שירות תעודות SSL/TLS חינמי ואוטומטי שמפעיל את ה-HTTPS של GitHub Pages. מתחדש אוטומטית כל 90 יום.
gh-pages branch
branch מסורתי לפרסום GitHub Pages — השיטה הקלאסית (לפני Actions). עדיין נתמך אבל פחות גמיש.
Custom 404
דף שגיאה מותאם אישית שמוצג כשמשתמש מגיע לנתיב לא קיים באתר. נוצר על ידי הוספת 404.html לשורש.
SPA Routing
ניתוב בצד הלקוח באפליקציית Single Page Application — כל הנתיבים מטופלים ב-JavaScript. דורש workaround ב-Pages כי אין שרת.
sitemap.xml
קובץ XML שמפרט את כל הדפים באתר עם תאריך עדכון אחרון — עוזר למנועי חיפוש לגלות ולאנדקס את התוכן ביעילות.
robots.txt
קובץ טקסט בשורש האתר שמורה למנועי חיפוש אילו דפים לאנדקס ואילו לדלג עליהם.
Open Graph
פרוטוקול meta tags (של Facebook) שקובע איך הדף נראה כשמשתפים אותו ברשתות חברתיות — כותרת, תיאור, ותמונה.
upload-pages-artifact
GitHub Action רשמי שאורז את קבצי האתר כ-artifact מוכן לפריסה ב-Pages. עובד יחד עם deploy-pages.

3.1 מה זה GitHub Pages ולמה זה עדיין רלוונטי ב-2026

GitHub Pages הוא שירות אירוח חינמי לאתרים סטטיים, מובנה ישירות ב-GitHub. כל מה שצריך זה repository עם קבצי HTML, CSS ו-JavaScript — ו-GitHub יגיש אותם כאתר חי באינטרנט. בלי שרת, בלי תשלום, בלי תצורה מורכבת. תעשו push ל-repository — והאתר מתעדכן. זהו.

מאחורי הקלעים, GitHub Pages משתמש ברשת CDN של Fastly כדי להגיש את הקבצים במהירות מכל מקום בעולם. כלומר, גם אם האתר שלכם מתארח ב-GitHub, המשתמשים שלכם מקבלים אותו מהשרת הקרוב ביותר אליהם — בדיוק כמו אתר שמשלמים עליו.

יש שני סוגי אתרים ב-Pages, וחשוב להבין את ההבדל:

  1. אתר משתמש/ארגון (User/Org site) — נגיש בכתובת username.github.io. נוצר מריפוזיטורי עם השם המדויק username.github.io. אחד בלבד לכל חשבון. פורסם מ-branch ברירת מחדל.
  2. אתר פרויקט (Project site) — נגיש בכתובת username.github.io/repo-name. כל ריפוזיטורי יכול להיות אתר פרויקט — אין הגבלה על כמות. פורסם מ-branch ספציפי או מ-Actions.

ההבדל הפרקטי: אתר משתמש הוא הבית הראשי שלכם (portfolio, דף אישי), ואתרי פרויקט הם אתרים נפרדים לכל ריפו (דוקומנטציה, landing page, בלוג של פרויקט ספציפי).

למה Pages עדיין רלוונטי ב-2026, כשיש Vercel, Netlify ו-Cloudflare Pages? ארבע סיבות:

  1. חינמי לגמרי. לא free tier עם כוכביות — חינמי. אירוח, HTTPS, דומיין מותאם, bandwidth של 100GB בחודש. לא צריך כרטיס אשראי, לא צריך הרשמה נפרדת. אם יש לכם GitHub — יש לכם Pages.
  2. משולב ב-GitHub. הקוד, ה-CI/CD, והאירוח — הכל באותו מקום. push ל-main = האתר מתעדכן. אפס כלים חיצוניים, אפס תצורה של צד שלישי. ה-repository הוא האתר.
  3. פשוט. אם כל מה שצריך זה להעלות HTML לאינטרנט — Pages הוא הדרך הקצרה ביותר. אין signup, אין dashboard נפרד, אין CLI נוסף. פתיחת Pages = toggle בהגדרות.
  4. אמינות. GitHub Pages מופעל על ידי Fastly CDN עם uptime גבוה במיוחד. לאתרים סטטיים עם תעבורה סבירה, הביצועים מצוינים — והכל בלי שתשלמו שקל.

מתי Pages לא מתאים? כשצריכים server-side code (PHP, Node.js, Python), בסיס נתונים, authentication (חוץ מ-Enterprise Cloud), או serverless functions. ל-Pages אין שום עיבוד בצד השרת — הוא מגיש קבצים סטטיים ותו לא. אם האתר שלכם צריך לדבר עם database או לרוץ backend logic, Pages הוא לא הבית הנכון.

זמינות: Pages זמין בחינם לריפוזיטוריים ציבוריים בכל התוכניות, ולריפוזיטוריים פרטיים בתוכניות Pro, Team ו-Enterprise. שימו לב: גם אם הריפו פרטי, האתר של Pages תמיד ציבורי (חוץ מ-Enterprise Cloud שמאפשר אתרי Pages פרטיים עם authentication). זו נקודה שחשוב לזכור — לעולם אל תשימו מידע רגיש בקבצים שמפורסמים ב-Pages.

עשו עכשיו

היכנסו ל-Settings של ריפוזיטורי שלכם ← גללו למטה ל-Pages. מה כתוב שם? אם אף פעם לא הגדרתם Pages, תראו שהשירות לא פעיל. שימו לב ל-Source dropdown — זה המקום שבו בוחרים את מצב הפרסום. שימו לב גם לכתובת ה-URL שמופיעה (או שתופיע אחרי הפעלה) — זו הכתובת של האתר שלכם.

3.2 שני מצבי פרסום: מ-branch או מ-Actions

ל-GitHub Pages יש שני מצבי פרסום, ובחירת המצב הנכון משפיעה על כל דבר — מה build tool שתשתמשו בו ועד כמה שליטה יש לכם על התהליך. הבחירה נעשית פעם אחת ב-Settings → Pages → Source, ואפשר לשנות בכל רגע.

מצב 1: Deploy from a Branch (קלאסי)

בוחרים branch (בדרך כלל main או gh-pages) ותיקייה (/ root או /docs). GitHub מריץ Jekyll אוטומטית (אלא אם יש .nojekyll), בונה את האתר, ומגיש אותו. כל push ל-branch הזה = build חדש.

יתרונות: פשוט להפליא. אפס קונפיגורציה, אפס YAML, אפס workflow. בוחרים branch ותיקייה, לוחצים Save — וזהו. מושלם לאתרי Markdown/Jekyll, דוקומנטציה פשוטה, או HTML סטטי שלא צריך שום build.

חסרונות: Jekyll בלבד (או HTML סטטי), אין שליטה על תהליך ה-build, אין בדיקות (lint, tests, lighthouse) לפני פרסום, אין אפשרות להשתמש ב-npm/Node.js/Python/או כל build tool אחר.

טיפ על /docs folder: אם בוחרים לפרסם מתיקיית /docs, אפשר לשמור את הקוד של הפרויקט בשורש ואת האתר בתיקייה נפרדת. זה שימושי לפרויקטי open source שרוצים דוקומנטציה באותו ריפו — הקוד ב-root, האתר ב-/docs.

מצב 2: GitHub Actions (מודרני)

כותבים workflow שעושה build לאתר (עם כל כלי שרוצים — React, Vue, Astro, Hugo, Vite, 11ty, או כל דבר אחר), מעלים את התוצר כ-artifact, ופורסים ל-Pages. זה המצב המומלץ ב-2026.

יתרונות: כל framework, כל build tool, בדיקות לפני פרסום (lint, tests, accessibility audit), שליטה מלאה על כל שלב. אפשר להוסיף environments, secrets, conditions — הכל מה שלמדתם בפרק 1 על Actions.

חסרונות: דורש כתיבת workflow YAML (שנלמד בסעיף 3.5). צריך להבין permissions, artifacts, ו-environments. לאתר HTML פשוט בלי build — זה overkill.

טבלת השוואה

קריטריוןBranch (קלאסי)Actions (מודרני)
תצורהאפס — בוחרים branch ותיקייהכתיבת workflow YAML
Build toolJekyll בלבד (או HTML סטטי)כל דבר: React, Vue, Astro, Hugo, Vite...
בדיקות לפני פרסוםאיןכל מה שרוצים — lint, test, lighthouse
שליטה בתהליךמינימלית — GitHub מחליטמלאה — אתם כותבים כל שלב
זמן setup30 שניות5-10 דקות (פעם אחת)
מתאים ל...HTML סטטי, Jekyll blogs, דוקומנטציה פשוטהכל דבר שדורש build, framework, או בדיקות
שני מצבי פרסום ב-GitHub Pages מצב 1: Deploy from Branch (קלאסי) Push ל-branch Jekyll build GitHub Pages username.github.io מצב 2: GitHub Actions (מודרני) Push ל-main Workflow trigger Build (npm/vite) Upload artifact Deploy Pages Live! ההמלצה ב-2026 Branch mode = פשוט אבל מוגבל. Actions mode = שליטה מלאה, כל framework, בדיקות לפני פרסום.

איזה מצב לבחור? כלל אצבע: אם אתם שמים קובץ HTML ועושים push — branch mode מספיק ויותר. אם יש לכם package.json, npm run build, או כל תהליך build — השתמשו ב-Actions. ברגע שתבנו את ה-workflow פעם אחת, הוא רץ אוטומטית לנצח.

עשו עכשיו

בהגדרות Pages שלכם (Settings → Pages), שנו את Source ל-GitHub Actions (תוכלו להחזיר אחרי). שימו לב איך הטקסט משתנה — במקום לבחור branch, מופיעות הנחיות לכתיבת workflow. רשמו לעצמכם מה היה קודם כדי שתוכלו להחזיר.

3.3 האתר הראשון שלך — מאפס לאונליין ב-5 דקות

בואו נבנה אתר Pages מאפס. לא צריך framework, לא צריך build tool, לא צריך ידע מתקדם — רק HTML, push, והאתר באוויר. זו אחת החוויות הכי מספקות ב-GitHub: לכתוב קוד, לעשות push, ולראות אותו חי באינטרנט תוך 30 שניות.

שלב 1: יצירת הריפוזיטורי

אפשר להשתמש בריפוזיטורי קיים או ליצור חדש. אם יוצרים חדש, בחרו שם בלי רווחים או תווים מיוחדים (כי זה יהיה חלק מה-URL). לדוגמה: my-portfolio ייצור אתר בכתובת username.github.io/my-portfolio.

טיפ: אם אתם יוצרים ריפו בשם username.github.io (עם שם המשתמש המדויק שלכם), הכתובת תהיה https://username.github.io — בלי שם הריפו בסוף. זה אתר המשתמש שלכם, ויש רק אחד כזה לכל חשבון.

שלב 2: יצירת הקבצים

הוסיפו שני קבצים לריפו:

<!-- index.html -->
<!DOCTYPE html>
<html lang="he" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>האתר שלי</title>
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 2rem;
            background: #0d1117;
            color: #e6edf3;
        }
        h1 { color: #a855f7; }
        a { color: #58a6ff; }
    </style>
</head>
<body>
    <h1>שלום עולם!</h1>
    <p>האתר הזה רץ על GitHub Pages. חינם.</p>
    <p><a href="https://github.com/USERNAME">הפרופיל שלי ב-GitHub</a></p>
</body>
</html>

שלב 3: קובץ .nojekyll

צרו קובץ ריק בשם .nojekyll בשורש הריפו. הקובץ הזה אומר ל-GitHub: אל תריץ Jekyll. בלי הקובץ הזה, GitHub ינסה לעבד את האתר עם Jekyll, מה שמוסיף זמן build מיותר ועלול לגרום לבעיות עם קבצים שמתחילים ב-underscore (כמו _next, _assets, _build).

# צרו את הקובץ (ריק, בלי תוכן):
touch .nojekyll

למה צריך את הקובץ הזה? ב-branch mode, GitHub מריץ Jekyll אוטומטית על כל build. Jekyll מצפה למבנה מסוים (front matter, Liquid, layouts) ומתייחס לתיקיות שמתחילות ב-_ כתיקיות מיוחדות שלו. אם אתם לא משתמשים ב-Jekyll — זה רק מעכב ויכול לשבור דברים. .nojekyll מבטל את זה.

שלב 4: Push והפעלת Pages

git add index.html .nojekyll
git commit -m "feat: add GitHub Pages site"
git push origin main

עכשיו היכנסו ל-Settings → Pages, בחרו:

לחצו Save. תוך 30 שניות עד דקה, האתר שלכם יהיה זמין בכתובת https://username.github.io/repo-name. תראו גם הודעה ירוקה עם הקישור באותו עמוד הגדרות.

לא רואים שינויים? כמה סיבות נפוצות: (1) cache של הדפדפן — נסו Ctrl+Shift+R לרענון מלא; (2) ה-build עדיין רץ — חכו דקה ורעננו; (3) שם הקובץ לא index.html בדיוק — בדקו אותיות גדולות/קטנות.

עשו עכשיו

הוסיפו קובץ .nojekyll ריק לשורש הריפו שלכם אם עדיין אין לכם. זה חוסך בנייה מיותרת ומונע בעיות עם קבצים מיוחדים. ודאו שהקובץ התווסף ל-commit (הוא מתחיל בנקודה, אז ls רגיל לא מראה אותו — השתמשו ב-ls -a).

תרגיל 1: האתר הראשון שלך

צרו ריפוזיטורי חדש (או השתמשו בקיים), הוסיפו index.html עם תוכן בסיסי ו-.nojekyll, הפעילו Pages מ-branch main, ובדקו שהאתר חי.

  1. צרו ריפוזיטורי חדש ב-GitHub (שם מתאים, ציבורי)
  2. Clone לוקלי: git clone https://github.com/USERNAME/REPO.git
  3. צרו index.html עם תוכן בסיסי (השתמשו בדוגמה למעלה או כתבו משלכם)
  4. צרו .nojekyll ריק
  5. Commit + push: git add . && git commit -m "feat: initial site" && git push
  6. הפעילו Pages ב-Settings → Pages → Deploy from branch → main → / (root) → Save
  7. חכו דקה, גשו לכתובת https://USERNAME.github.io/REPO

שמרו את הכתובת — תצטרכו אותה בתרגילים הבאים.

בונוס: הוסיפו style.css נפרד, תמונה (צילום, לוגו), ולינק לפרופיל GitHub שלכם. וודאו שהכל עובד באתר שפורסם — לא רק לוקלית.

3.4 Jekyll — המנוע המובנה (ומתי לוותר עליו)

Jekyll הוא מנוע בניית אתרים סטטיים שנוצר על ידי Tom Preston-Werner — אחד ממייסדי GitHub. הוא כתוב ב-Ruby וממיר קבצי Markdown ותבניות Liquid לאתר HTML מלא. GitHub Pages מריץ אותו אוטומטית במצב branch-based — כלומר, אם אתם בוחרים Deploy from a branch ואין .nojekyll, Jekyll רץ על כל push.

ההיסטוריה חשובה להבנה: Jekyll נוצר ב-2008, לפני Vercel, לפני Netlify, לפני Astro. הוא היה מהראשונים שהציעו "כתוב ב-Markdown, קבל אתר" — ו-GitHub שילב אותו ישירות ב-Pages. עד היום הוא עדיין אופציה טובה למקרים מסוימים.

מה Jekyll עושה:

מתי Jekyll מתאים:

מתי לוותר על Jekyll:

איך לבטל Jekyll: צרו קובץ ריק בשם .nojekyll בשורש הריפו. זהו. Jekyll לא ירוץ, והקבצים יוגשו כמו שהם — בדיוק מה ששמתם בריפו.

אלטרנטיבות מודרניות: אם רוצים את הרעיון של Jekyll (Markdown → אתר) אבל עם ביצועים טובים יותר, שקלו: Hugo (Go, מהיר מאוד), Astro (JavaScript, תומך ב-components), 11ty/Eleventy (JavaScript, פשוט). כולם עובדים עם Pages דרך Actions.

אזהרה

Jekyll מתייחס לתיקיות וקבצים שמתחילים ב-_ כמיוחדים. תיקיות כמו _next (של Next.js), _build, _site, _assets, או _nuxt (של Nuxt) ייעלמו מהאתר אם Jekyll רץ — הוא חושב שהן שלו. הפתרון: תמיד הוסיפו .nojekyll כשאתם לא משתמשים ב-Jekyll. זו עצה שחוסכת שעות של debugging.

עשו עכשיו

בדקו אם יש .nojekyll בריפו שלכם. אם אין — צרו אחד (touch .nojekyll) ועשו push. אם כן יש — מצוין, עברו לסעיף הבא.

3.5 פרסום עם Actions — שליטה מלאה

עכשיו נעבור למצב המומלץ: פרסום דרך GitHub Actions. זה נותן שליטה מלאה — אתם בוחרים את ה-build tool, מוסיפים בדיקות, ורק אם הכל עובר — האתר מתפרסם. אם למדתם Actions בפרק 1, הרבה מהמבנה יהיה מוכר.

ה-workflow מורכב משני jobs שרצים ברצף:

  1. Build — בונה את האתר (install, lint, test, build) ומעלה את התוצר כ-artifact
  2. Deploy — לוקח את ה-artifact ופורס אותו ל-GitHub Pages

למה שני jobs ולא אחד? כי ה-deploy צריך לרוץ ב-environment מיוחד (github-pages), ואם ה-build נכשל — ה-deploy לא מתבצע. זה separation of concerns: build הוא build, deploy הוא deploy.

הנה workflow מלא ומוכן לשימוש:

# .github/workflows/deploy-pages.yml
name: Deploy to GitHub Pages

on:
  push:
    branches: [main]
  workflow_dispatch:          # אפשרות להפעלה ידנית מה-UI

# *** permissions חובה — בלי זה ה-deploy ייכשל ***
permissions:
  contents: read
  pages: write
  id-token: write

# מניעת פריסות כפולות — רק הגרסה האחרונה תיפרס
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Pages
        uses: actions/configure-pages@v5

      # --- כאן הוסיפו את ה-build שלכם ---
      # דוגמה: npm ci && npm run build
      # התוצאה צריכה להיות בתיקייה (למשל: ./dist, ./build, ./out)

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: '.'    # או ./dist, ./build — התיקייה עם האתר הסופי

  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

נפרק את החלקים הקריטיים אחד-אחד:

חשוב: לפני שה-workflow יעבוד, ודאו ש-Settings → Pages → Source מוגדר ל-GitHub Actions (לא Deploy from a branch). אם המצב לא נכון, ה-workflow ירוץ ויצליח — אבל האתר לא יתעדכן.

דוגמה: אתר React עם Vite

אם יש לכם אפליקציית React שנבנית עם Vite, ה-build job ייראה כך:

  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: 'npm'
      - run: npm ci
      - run: npm run build
      - uses: actions/configure-pages@v5
      - uses: actions/upload-pages-artifact@v3
        with:
          path: './dist'    # Vite מייצר לתיקיית dist

דוגמה: אתר Astro

  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: 'npm'
      - run: npm ci
      - run: npm run build
      - uses: actions/configure-pages@v5
      - uses: actions/upload-pages-artifact@v3
        with:
          path: './dist'    # Astro מייצר לתיקיית dist

דוגמה: אתר Hugo (בלי Node.js)

  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: 'latest'
          extended: true
      - run: hugo --minify
      - uses: actions/configure-pages@v5
      - uses: actions/upload-pages-artifact@v3
        with:
          path: './public'    # Hugo מייצר לתיקיית public

שימו לב לתבנית: כל הדוגמאות חולקות אותו מבנה — checkout, setup, build, configure-pages, upload-artifact. השינוי היחיד הוא ב-build tool ובתיקיית הפלט (dist, public, build).

עשו עכשיו

בדקו את טאב Actions בריפו שלכם — האם ה-workflow רץ? האם ה-deploy job הצליח? אם יש שגיאה, בדקו שלושה דברים: (1) ה-Source ב-Pages settings מוגדר ל-GitHub Actions, (2) ה-permissions נכונים, (3) ה-path ב-upload-artifact מצביע לתיקייה הנכונה.

תרגיל 2: פרסום עם Actions

כתבו GitHub Actions workflow שמפרסם את האתר שלכם ל-Pages:

  1. צרו תיקייה .github/workflows/ אם לא קיימת
  2. צרו קובץ deploy-pages.yml בתוכה
  3. העתיקו את ה-workflow המלא מלמעלה
  4. התאימו את path ב-upload-pages-artifact לתיקייה שלכם (. אם אין build, ./dist אם יש)
  5. שנו את Source ב-Settings → Pages ל-GitHub Actions
  6. Commit + push, ובדקו שה-workflow רץ בטאב Actions
  7. ודאו שהאתר מתעדכן בכתובת שלו

בונוס: הוסיפו step של npm run lint לפני ה-build — כך אם יש שגיאות lint, ה-build נכשל והאתר לא מתפרסם עם קוד שבור.

עשו עכשיו

אם יש לכם אתר קיים שפורסם עם branch mode — נסו להעביר אותו ל-Actions mode. צרו workflow, שנו את Source ב-Settings, ובדקו שהאתר עדיין עובד. ההעברה צריכה להיות חלקה — הכתובת נשארת אותו דבר.

3.6 דומיין מותאם — מ-github.io לדומיין שלך

כתובת username.github.io היא סבבה ללמידה ולפרויקטים אישיים, אבל לאתר רציני — אתר עסקי, portfolio מקצועי, או פרויקט שרוצים שאנשים יזכרו — צריך דומיין משלכם. GitHub Pages תומך בדומיינים מותאמים עם HTTPS אוטומטי חינמי דרך Let's Encrypt, בלי שתשלמו שקל נוסף מעבר למחיר הדומיין עצמו.

יש שני סוגי חיבור, ואפשר גם את שניהם יחד:

סוג 1: Subdomain (מומלץ להתחלה)

אם יש לכם דומיין example.com ורוצים www.example.com או blog.example.com:

סוג רשומהשם (Host)ערך (Value)הסבר
CNAMEwwwusername.github.ioמפנה www.example.com לשרתי GitHub

למה CNAME עדיף? כי GitHub יכול לשנות IP addresses מבלי שתצטרכו לעדכן DNS. ה-CNAME מצביע על שם (username.github.io) ולא על IP — אז אם GitHub מעביר שרתים, הכל ממשיך לעבוד.

סוג 2: Apex Domain (root domain)

אם רוצים example.com ישירות (בלי www), צריך A records כי apex domains לא תומכים ב-CNAME (זו מגבלה של DNS, לא של GitHub):

סוג רשומהשם (Host)ערך (Value)
A@185.199.108.153
A@185.199.109.153
A@185.199.110.153
A@185.199.111.153

מומלץ גם להוסיף רשומות AAAA (IPv6) לתמיכה מלאה:

סוג רשומהשם (Host)ערך (Value)
AAAA@2606:50c0:8000::153
AAAA@2606:50c0:8001::153
AAAA@2606:50c0:8002::153
AAAA@2606:50c0:8003::153

השילוב המומלץ: הגדירו גם www (CNAME) וגם apex (A records). ב-GitHub Pages Settings, הכניסו את הדומיין עם www (למשל www.example.com). GitHub יפנה אוטומטית מ-apex ל-www (או להיפך, תלוי מה הגדרתם).

הגדרה ב-GitHub — שלב אחר שלב

  1. היכנסו ל-Settings → Pages
  2. תחת Custom domain, הכניסו את הדומיין (למשל www.example.com)
  3. לחצו Save — GitHub יבדוק DNS ויציג סטטוס
  4. המתינו עד שה-DNS check יעבור (כפתור ירוק) — אם עדיין אדום, ה-DNS עדיין לא התעדכן
  5. סמנו את Enforce HTTPS — אם האפשרות אפורה, ה-DNS עדיין לא מחובר; חכו ונסו שוב

מה קורה מאחורי הקלעים: כשאתם שומרים custom domain, GitHub יוצר קובץ CNAME בשורש הריפו שלכם (אם אתם במצב branch-based). הקובץ מכיל את שם הדומיין בלבד. אם אתם במצב Actions — ה-workflow צריך להשתמש ב-configure-pages@v5 שקורא את הגדרת הדומיין.

DNS propagation: שינויי DNS יכולים לקחת עד 24 שעות (בחלק מהרשמים הישראליים — עד 48 שעות). אל תיבהלו אם זה לא עובד מיד. אפשר לבדוק עם dig www.example.com בטרמינל אם ה-DNS כבר התעדכן.

טיפ ישראלי: דומיינים של .co.il עובדים מצוין עם GitHub Pages. הגדירו את הרשומות אצל הרשם שלכם (Namecheap, Cloudflare, GoDaddy, או ספק ישראלי כמו InterHost) בדיוק כמו בטבלאות למעלה. שימו לב ש-.co.il לפעמים דורש זמן propagation ארוך יותר מ-.com.

זרימת הגדרת דומיין מותאם רשם דומיינים CNAME / A records Namecheap, Cloudflare... DNS Propagation עד 24 שעות (ישראל: עד 48 שעות) GitHub Pages Custom domain + Enforce HTTPS HTTPS פעיל Let's Encrypt תעודה אוטומטית Subdomain (www) CNAME → username.github.io פשוט ומומלץ תומך ב-CDN של GitHub Apex Domain (root) A × 4 → 185.199.108-111.153 + AAAA × 4 (IPv6) נדרש לדומיין ללא www

אימות דומיין: מומלץ מאוד לאמת את הדומיין שלכם ברמת המשתמש או הארגון: Settings (של חשבון, לא של ריפו) → Pages → Verified domains. זה מונע ממישהו אחר לחבר את הדומיין שלכם לריפו שלו (מה שנקרא domain takeover) — בעיית אבטחה אמיתית שכדאי למנוע.

אזהרה

לעולם אל תבטלו HTTPS. גם אם נראה שהכל עובד בלי — ב-2026 דפדפנים מציגים אזהרות בולטות ("Not Secure") על אתרים ללא HTTPS. זה פוגע ב-SEO (Google מוריד דירוג לאתרים ללא HTTPS), באמינות (משתמשים רואים אזהרה אדומה), ובאבטחה (כל אחד ברשת יכול לראות מה הגולשים עושים). תמיד סמנו Enforce HTTPS ב-Settings → Pages.

עשו עכשיו

היכנסו ל-Settings → Pages בריפו שלכם. אם יש לכם דומיין — הכניסו אותו בשדה Custom domain ולחצו Save. אם אין — שמרו את טבלאות ה-DNS records (למעלה) לשימוש עתידי כשתרכשו דומיין. ב-Cloudflare אפשר לרכוש דומיין .com במחיר עלות (~$10/שנה).

תרגיל 3: דומיין מותאם + HTTPS

אם יש לכם דומיין:

  1. היכנסו לפאנל הניהול של רשם הדומיינים שלכם (Cloudflare, Namecheap, GoDaddy...)
  2. הגדירו רשומות DNS: CNAME ל-subdomain (מומלץ), או A records ל-apex domain
  3. חזרו ל-GitHub → Settings → Pages → Custom domain — הכניסו את הדומיין
  4. המתינו ל-DNS check ירוק (יכול לקחת דקות עד שעות)
  5. סמנו Enforce HTTPS (אם האפשרות אפורה — המתינו עוד קצת)
  6. ודאו שהאתר נגיש בכתובת הדומיין עם HTTPS (מנעול ירוק)

אם אין לכם דומיין, עבדו עם username.github.io וודאו שה-HTTPS פעיל (הוא אמור להיות פעיל כברירת מחדל לדומיינים של github.io).

בונוס: אמתו את הדומיין שלכם ב-Settings → Pages → Verified domains (ברמת המשתמש, לא הריפו) למניעת domain takeover.

3.7 404 מותאם ו-SPA Routing

Custom 404

כשמשתמש מגיע לנתיב שלא קיים באתר שלכם (למשל, טעות כתיב ב-URL, לינק שבור, או עמוד שנמחק), GitHub Pages מחפש קובץ 404.html בשורש. אם הוא קיים — הוא מוצג (עם HTTP status 404). אם לא — מוצג דף 404 גנרי ומכוער של GitHub עם לוגו ושום דבר שימושי.

דף 404 טוב הוא לא רק "הדף לא נמצא" — הוא הזדמנות. הוא יכול להכיל: ניווט חזרה לעמוד הראשי, שורת חיפוש, לינקים לדפים הכי פופולריים, או אפילו הומור שמשאיר את המשתמש באתר במקום ללחוץ Back.

צרו 404.html עם עיצוב שתואם לאתר שלכם:

<!DOCTYPE html>
<html lang="he" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 — הדף לא נמצא</title>
    <style>
        body {
            font-family: -apple-system, sans-serif;
            text-align: center;
            padding: 4rem 2rem;
            background: #0d1117;
            color: #e6edf3;
        }
        h1 { font-size: 4rem; color: #a855f7; margin-bottom: 0.5rem; }
        p { font-size: 1.2rem; color: #8b949e; }
        a { color: #58a6ff; text-decoration: none; }
        a:hover { text-decoration: underline; }
        .links { margin-top: 2rem; }
        .links a { margin: 0 1rem; }
    </style>
</head>
<body>
    <h1>404</h1>
    <p>הדף שחיפשת לא קיים. אולי הכתובת השתנתה, או שיש טעות ב-URL.</p>
    <div class="links">
        <a href="/">חזרה לעמוד הראשי</a>
    </div>
</body>
</html>

SPA Routing Workaround

אם בניתם אפליקציית Single Page Application (React Router, Vue Router, Angular Router, וכו'), כל הניתוב קורה בצד הלקוח ב-JavaScript. כלומר, כש-URL משתנה מ-/ ל-/about, ה-JavaScript מטפל בזה — הדפדפן לא שולח בקשה חדשה לשרת.

אבל יש בעיה: כשהמשתמש מרענן דף פנימי כמו /about, או שולח את הלינק למישהו, הדפדפן שולח בקשה לשרת של GitHub Pages שמחפש קובץ about/index.html — ומחזיר 404 כי הקובץ לא קיים. כל הנתיבים קיימים רק ב-JavaScript, לא כקבצים פיזיים.

Workaround: יצירת 404.html שמפנה ל-index.html תוך שמירה על הנתיב המקורי:

<!-- 404.html — שומר את הנתיב ומפנה ל-index.html -->
<script>
  // שומר את הנתיב כ-query parameter ומפנה לעמוד הראשי
  const path = window.location.pathname + window.location.search;
  window.location.replace('/?redirect=' + encodeURIComponent(path));
</script>
<!-- ב-index.html (הוסיפו לפני ה-script של האפליקציה) -->
<script>
  const params = new URLSearchParams(window.location.search);
  const redirect = params.get('redirect');
  if (redirect) {
    window.history.replaceState(null, '', redirect);
  }
</script>

איך זה עובד: (1) משתמש מגיע ל-/about, (2) GitHub Pages מחזיר 404.html (עם status 404), (3) ה-JavaScript ב-404 מפנה ל-/?redirect=%2Fabout, (4) ה-JavaScript ב-index.html משחזר את הנתיב /about ב-URL bar, (5) ה-SPA router לוקח שליטה ומציג את הדף הנכון.

אלטרנטיבה פשוטה יותר: השתמשו ב-hash-based routing (/#/about במקום /about). Hash routes (החלק אחרי #) לא נשלחים לשרת כלל, אז הבעיה לא קיימת. ב-React Router: HashRouter במקום BrowserRouter. ב-Vue Router: createWebHashHistory().

שימו לב לבעיית SEO: ה-workaround מחזיר HTTP 404 לפני ההפניה. מנועי חיפוש רואים את ה-404 ולא מאנדקסים את הדף. לאתרי SPA רציניים עם דרישות SEO (שרוצים שגוגל ימצא את כל הדפים), שקלו Vercel או Netlify שתומכים ב-redirect rules נאטיביים, או שימוש ב-SSG (Static Site Generation) שמייצר HTML לכל נתיב בזמן build.

עשו עכשיו

צרו קובץ 404.html בשורש הריפו שלכם עם עיצוב שתואם לאתר — השתמשו באותם צבעים, פונטים, ומבנה. עשו push, ואז נסו לגשת לנתיב שלא קיים (למשל /this-does-not-exist) ובדקו שהדף המותאם מופיע במקום הדף הגנרי של GitHub.

3.8 SEO בסיסי לאתרי Pages

אתר Pages חי באינטרנט, ואם הוא ציבורי — מנועי חיפוש יגיעו אליו. השאלה היא האם הם ימצאו אתר מסודר עם מטאדאטה נכונה, או אתר בלי כותרת ובלי תיאור שנראה מוזר בתוצאות החיפוש. הנה הבסיס שכל אתר Pages צריך:

Meta Tags חובה בכל דף

<head>
    <!-- כותרת — מופיעה בלשונית הדפדפן ובתוצאות חיפוש -->
    <title>שם האתר — שם הדף</title>

    <!-- תיאור — מופיע מתחת לכותרת בתוצאות חיפוש -->
    <meta name="description" content="תיאור של הדף ב-150-160 תווים.
     תכתבו משפט שמזמין לחיצה.">

    <!-- URL קנוני — אומר למנועי חיפוש מה הכתובת הרשמית -->
    <link rel="canonical" href="https://example.com/page">

    <!-- Open Graph — לשיתוף ברשתות חברתיות -->
    <meta property="og:title" content="שם הדף">
    <meta property="og:description" content="תיאור הדף">
    <meta property="og:image" content="https://example.com/og-image.png">
    <meta property="og:url" content="https://example.com/page">
    <meta property="og:type" content="website">

    <!-- Twitter Card — לשיתוף ב-Twitter/X -->
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="שם הדף">
    <meta name="twitter:description" content="תיאור הדף">
    <meta name="twitter:image" content="https://example.com/og-image.png">
</head>

טיפ על og:image: הגודל המומלץ הוא 1200x630 פיקסלים. תמונה טובה לשיתוף ברשתות עושה הבדל עצום — היא מה שאנשים רואים לפני שהם מחליטים ללחוץ. אל תוותרו על זה.

robots.txt

# robots.txt — בשורש האתר
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml

הקובץ הזה אומר למנועי חיפוש: "תאנדקסו הכל, וה-sitemap נמצא בכתובת הזו". אם יש דפים שלא רוצים לאנדקס (למשל, draft pages), אפשר להוסיף Disallow: /drafts/.

sitemap.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-04-01</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc>https://example.com/about</loc>
    <lastmod>2026-04-01</lastmod>
    <changefreq>monthly</changefreq>
  </url>
</urlset>

אם יש לכם הרבה דפים, עדכון ידני של sitemap מייגע. אפשרויות: (1) Jekyll מייצר sitemap אוטומטית עם jekyll-sitemap plugin, (2) ב-Astro/Hugo/11ty — יש plugins שמייצרים sitemap בזמן build, (3) אפשר לכתוב script פשוט שסורק את הקבצים ומייצר sitemap.

Semantic HTML

מעבר ל-meta tags, המבנה של ה-HTML עצמו משפיע על SEO:

JSON-LD לתוצאות עשירות

אם רוצים תוצאות עשירות בגוגל (Rich Snippets) — למשל, FAQ, HowTo, או Breadcrumbs — מוסיפים JSON-LD ב-head:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "שם האתר",
  "url": "https://example.com",
  "description": "תיאור האתר"
}
</script>

כלים חינמיים לבדיקה

עשו עכשיו

הוסיפו meta tags (title, description, og:title, og:description, og:image) לדף הראשי של האתר שלכם. עשו push, ואז בדקו עם Facebook Sharing Debugger איך הקישור נראה כשמשתפים אותו. תתפלאו כמה זה משנה.

3.9 מגבלות — מה Pages לא יכול לעשות

GitHub Pages הוא מצוין למה שהוא, אבל חשוב לדעת את הגבולות לפני שמתחילים — לא אחרי שכבר בניתם חצי אתר וגיליתם שהפלטפורמה לא תומכת במה שצריך.

מגבלות טכניות

מגבלהערךמה קורה אם חורגים
גודל ריפוזיטורי1GB מומלץאזהרות מ-GitHub, ביצועי clone יורדים משמעותית
גודל אתר (published)1GB מקסימוםה-build נכשל
Bandwidth100GB / חודשsoft limit — האתר לא נחסם מיד, אבל GitHub עלולים ליצור קשר ולבקש לצמצם
תדירות build10 builds / שעהbuilds נוספים נכנסים לתור ומחכים
גודל artifact (Actions)10GB מקסימוםה-upload נכשל

מה Pages לא יכול לעשות — בכלל:

לכל מגבלה יש workaround: טפסים עם Formspree או Tally, authentication עם Auth0, Clerk, או Supabase Auth, backend עם Cloudflare Workers או AWS Lambda, redirect עם JavaScript. אבל ברגע שצריכים 3-4 workarounds — אולי עדיף לעבור לפלטפורמה שעושה את זה נאטיבית.

מסגרת החלטה: מתי לעזוב את Pages

עזבו את GitHub Pages כשמתקיים אחד או יותר מהתנאים הבאים:

  1. צריכים server-side logic — API routes, form processing, authentication, database queries
  2. צריכים redirect rules — הפניות 301/302 מנתיב ישן לחדש (נפוץ כשמבנה האתר משתנה)
  3. צריכים preview deploys — URL זמני לכל PR כדי לבדוק שינויים לפני merge
  4. צפי לתעבורה גבוהה — מעל 100GB/חודש (אתר ויראלי, הרבה מדיה כבדה)
  5. צריכים custom HTTP headers — CSP, CORS, cache control, security headers

אם אף תנאי לא מתקיים — Pages הוא הבחירה הנכונה. פשוט, חינמי, ומשולב ב-GitHub.

אזהרה

100GB bandwidth בחודש נשמע הרבה, אבל עשו חשבון: אם הדף הראשי שוקל 2MB (עם תמונות), ויש לכם 50,000 צפיות בחודש — זה כבר 100GB. אתר עם תמונות כבדות שהולך ויראלי ב-Reddit, Twitter, או Product Hunt יכול לעבור את הרף ביום. טיפ: לתמונות כבדות, השתמשו ב-CDN חיצוני (Cloudflare Images, Cloudinary, imgix) או אופטימיזו תמונות (WebP, AVIF, lazy loading). או שקלו Cloudflare Pages שלא גובה על bandwidth כלל (zero egress).

אזהרה

מידע רגיש באתרי Pages. גם אם הריפוזיטורי שלכם פרטי, האתר של Pages תמיד ציבורי (חוץ מ-Enterprise Cloud). לעולם אל תשימו API keys, סיסמאות, מידע אישי, או כל דבר רגיש בקבצים שמפורסמים ב-Pages. גם אם מחקתם commit ישן — הקבצים עדיין נגישים ב-CDN cache לזמן מה.

3.10 Pages vs Vercel vs Netlify vs Cloudflare — טבלת החלטה

GitHub Pages הוא לא הבחירה היחידה לאירוח אתרים סטטיים. ב-2026 יש כמה פלטפורמות מצוינות שמציעות free tier נדיב. הבחירה הנכונה תלויה במה שצריכים — ולא תמיד הפלטפורמה הכי מתקדמת היא הנכונה. לפעמים הפשוט ביותר הוא הטוב ביותר.

מסגרת השוואה: פלטפורמות אירוח סטטי
קריטריוןGitHub PagesVercelNetlifyCloudflare Pages
מחיר (free tier)חינמי לגמריHobby חינמי100 build min/חודשחינמי לגמרי
Bandwidth100GB/חודש100GB/חודש100GB/חודשללא הגבלה
Serverless Functionsאיןכן (Edge + Node)כן (Edge + Node)כן (Workers)
Redirect Rulesאין (client-side בלבד)vercel.json_redirects / netlify.toml_redirects / _headers
Preview Deploysאין (אפשר עם Actions)אוטומטי על כל PRאוטומטי על כל PRאוטומטי על כל PR
Build ToolJekyll / Actionsכל frameworkכל frameworkכל framework
Edge NetworkFastly CDNVercel Edge (global)Netlify Edge (global)300+ locations
Custom Headersאיןvercel.json_headers / netlify.toml_headers
Form Handlingאיןאיןכן (Netlify Forms)אין
אינטגרציה עם GitHubמושלמת (built-in)טובה מאוד (app)טובה מאוד (app)טובה (app)
הכי מתאים ל...אתרים סטטיים פשוטיםNext.js, React appsJamstack כלליביצועים + zero cost
מסגרת החלטה: 4 שאלות לבחירת פלטפורמה
Decision Tree: בחירת פלטפורמת אירוח האתר סטטי בלבד? (בלי backend) כן לא צריכים preview deploys או redirects? לא GitHub Pages כן ביצועים + zero egress = עדיפות? כן Cloudflare Pages לא Netlify Framework = Next.js? כן Vercel לא Cloudflare Pages Pages = סטטי פשוט | Vercel = Next.js | Cloudflare = ביצועים + serverless | Netlify = Jamstack כללי

סיכום ה-decision tree:

  1. אתר סטטי פשוט (דוקומנטציה, portfolio, blog, landing page) → GitHub Pages
  2. צריכים serverless functions, redirect rules, preview deploysCloudflare Pages (הכי טוב ביחס מחיר/ביצועים, bandwidth ללא הגבלה) או Netlify (ידידותי, form handling מובנה)
  3. Next.jsVercel (הכי אופטימלי ל-framework שלהם — אותה חברה בנתה את שניהם)
  4. ביצועים מקסימליים + zero costCloudflare Pages (300+ edge locations, zero egress, Workers integration)

3.11 שימושים נפוצים — מה אנשים באמת בונים

GitHub Pages הוא לא רק "פיצ'ר של GitHub" — הוא מפעיל מיליוני אתרים, מאתרים אישיים קטנים ועד דוקומנטציה של פרויקטים עם מיליוני משתמשים. הנה השימושים הנפוצים ביותר, עם דוגמאות שאפשר להסתכל עליהן:

1. דוקומנטציה לפרויקטי קוד פתוח

זה השימוש הנפוץ ביותר ב-Pages, ובצדק. פרויקטים גדולים כמו React, Bootstrap, Tailwind CSS ו-Jekyll עצמו משתמשים ב-Pages (או בשירותים דומים מבוססי GitHub) לדוקומנטציה שלהם. היתרון: הקוד והדוקומנטציה באותו ריפו — שינוי ב-docs = עדכון אוטומטי באתר. Contributors יכולים לשפר את הדוקומנטציה דרך PR, בדיוק כמו קוד.

2. Portfolio / קורות חיים

אתר אישי עם הפרויקטים, הכישורים, ופרטי הקשר שלכם. הכתובת username.github.io כבר אומרת "אני מפתח/ת" — ומי שמגייס יודע לבדוק שם. הוסיפו דומיין מותאם לרושם יותר מקצועי. טיפ: כלים כמו Resume CLI מייצרים portfolio אוטומטית מפרופיל GitHub.

3. בלוג

Jekyll + Markdown = בלוג חינמי בלי תשלום חודשי ובלי מודעות. כותבים post חדש בקובץ Markdown, עושים push, האתר מתעדכן. תמות מוכנות חוסכות את כל העיצוב. לבלוג יותר מתקדם (מהיר יותר, תמיכה ב-components), שקלו Hugo או Astro עם Actions.

4. Landing Page לפרויקט או מוצר

דף נחיתה שמסביר מה הפרויקט עושה, עם screenshots, GIF של demo, וקישור להורדה או התקנה. חינמי, מהיר, ומשולב ב-GitHub — כך שהמשתמש רואה את הדף ויכול מיד לעבור לריפו.

5. אתרים ארגוניים קטנים

עמותות, ארגונים קטנים, ופרויקטי קהילה שלא צריכים backend יכולים לחסוך מאות שקלים בחודש באירוח עם Pages. האתר מהיר, מאובטח (HTTPS חינמי), ולא צריך תחזוקת שרת.

6. אתרי קורסים ומדריכים

מדריכים, tutorials, ואתרי למידה — כמו הקורס הזה. התוכן ב-Markdown או HTML, הפרסום אוטומטי, והגישה חינמית לכל מי שרוצה ללמוד. אפשר גם לתת לסטודנטים לתקן טעויות דרך PR.

7. סטטוס דפים (Status Pages)

אתרים שמציגים את מצב השירותים שלכם (online/offline). כלים כמו Upptime משתמשים ב-GitHub Actions + Pages כדי לבנות status page חינמי לגמרי — בלי שרת צד שלישי.

תרגיל 4: תכננו את האתר הבא שלכם

בהתבסס על הרשימה למעלה, תכננו את האתר הבא שלכם על GitHub Pages:

  1. בחרו סוג: portfolio, בלוג, landing page, דוקומנטציה, או משהו אחר
  2. רשמו 3-5 דפים שהאתר יכלול (לדוגמה: Home, About, Projects, Contact)
  3. החליטו על מצב פרסום: branch-based (אם HTML פשוט) או Actions (אם יש build)
  4. החליטו על framework: HTML ידני, Jekyll, Astro, Hugo, או אחר
  5. צרו ריפוזיטורי חדש עם index.html בסיסי ו-.nojekyll
  6. הפעילו Pages ובנו לפחות 2 דפים מתוך הרשימה שכתבתם

בונוס: הוסיפו meta tags, 404 מותאם, ו-robots.txt. שתפו את הלינק עם חבר ובדקו שה-Open Graph tags עובדים.

עשו עכשיו

חשבו על 3 שימושים שבהם GitHub Pages מתאים לכם אישית. רשמו אותם:

  1. _______________________________________________
  2. _______________________________________________
  3. _______________________________________________

לפחות אחד מהם — התחילו לבנות היום. לא מחר, לא בסוף השבוע. עכשיו. אתר עם index.html אחד לוקח 5 דקות.

3.12 סיכום ומבט קדימה

סיכום הפרק
  • GitHub Pages הוא שירות אירוח חינמי לאתרים סטטיים — HTML, CSS, JS ישירות מ-repository. זמין לכל ריפו ציבורי בחינם.
  • שני סוגי אתרים: User/Org site (username.github.io) ו-Project site (username.github.io/repo).
  • שני מצבי פרסום: branch-based (קלאסי, Jekyll, אפס קונפיגורציה) ו-Actions-based (מודרני, כל framework, שליטה מלאה).
  • Jekyll מובנה ב-Pages אבל לא תמיד נדרש — .nojekyll מבטל אותו. מתאים ל-Markdown/blogs. אלטרנטיבות: Hugo, Astro, 11ty.
  • Actions deployment נותן שליטה מלאה: permissions חובה (contents:read, pages:write, id-token:write), concurrency, upload-pages-artifact@v3 + deploy-pages@v4.
  • דומיין מותאם עם CNAME (subdomain) או A records (apex), ו-HTTPS אוטומטי חינמי עם Let's Encrypt. אמתו את הדומיין למניעת takeover.
  • Custom 404 — קובץ 404.html בשורש. SPA routing = workaround עם redirect, או hash-based routing כאלטרנטיבה.
  • SEO — meta tags (title, description), Open Graph, Twitter Cards, robots.txt, sitemap.xml, semantic HTML, JSON-LD.
  • מגבלות: 1GB repo, 100GB bandwidth/month, אין server-side, אין serverless, אין custom headers, אין redirects.
  • אלטרנטיבות: Vercel ל-Next.js, Cloudflare Pages לביצועים + zero cost + serverless, Netlify ל-Jamstack + forms.

אם אתם עושים רק דבר אחד מהפרק הזה

צרו ריפוזיטורי, שימו בו index.html ו-.nojekyll, הפעילו Pages מ-Settings, ובדקו שהאתר חי בכתובת username.github.io/repo-name. זה לוקח 5 דקות ונותן לכם אתר חי באינטרנט, בחינם, לנצח. כל השאר — Actions, דומיין מותאם, SEO — אפשר להוסיף אחר כך.

בדקו את עצמכם
  1. מה ההבדל בין User/Org site (username.github.io) ל-Project site (username.github.io/repo) ב-GitHub Pages?
  2. מתי כדאי להשתמש ב-branch-based publishing ומתי ב-Actions? תנו דוגמה לכל אחד.
  3. למה צריך .nojekyll כשלא משתמשים ב-Jekyll, ומה קורה בלי הקובץ הזה?
  4. אילו שלושה permissions נדרשים ב-Actions workflow לפרסום Pages, ומה כל אחד עושה?
  5. מה ההבדל בין CNAME record ל-A record בהגדרת דומיין מותאם, ומתי משתמשים בכל אחד?
שגרת עבודה מומלצת
  • יומית: Push שינויים ל-main — האתר מתעדכן אוטומטית (אם יש workflow). בדקו שה-deploy הצליח בטאב Actions.
  • שבועית: בדקו את טאב Actions — האם יש builds כושלים? שגיאות deploy? בדקו שהאתר נראה תקין בדפדפנים שונים ובמובייל.
  • חודשית: בדקו SEO: Google Search Console (אינדוקס, שגיאות), Lighthouse (ביצועים, accessibility), Open Graph tags (שיתוף ברשתות). עדכנו sitemap אם הוספתם דפים. בדקו שה-HTTPS עובד ושתעודת Let's Encrypt התחדשה.
צ'קליסט — מה עשינו בפרק הזה
  • ☐ הבנתי מה זה GitHub Pages ואיזה סוג אתרים הוא תומך (סטטי בלבד)
  • ☐ הבנתי את ההבדל בין User/Org site ל-Project site
  • ☐ הבנתי את שני מצבי הפרסום: branch-based ו-Actions-based
  • ☐ הקמתי אתר Pages עם index.html ו-.nojekyll
  • ☐ כתבתי Actions workflow לפרסום אוטומטי עם permissions ו-concurrency
  • ☐ הבנתי מה Jekyll עושה ומתי לבטל אותו עם .nojekyll
  • ☐ הבנתי איך לחבר דומיין מותאם (CNAME/A records + HTTPS + Enforce HTTPS)
  • ☐ יצרתי דף 404 מותאם עם עיצוב שתואם לאתר
  • ☐ הבנתי את בעיית SPA routing ב-Pages ואת ה-workarounds
  • ☐ הוספתי meta tags, Open Graph, ו-robots.txt לאתר
  • ☐ הבנתי את המגבלות (1GB, 100GB bandwidth, no server-side)
  • ☐ יודע/ת מתי Pages מתאים ומתי לבחור Vercel/Netlify/Cloudflare
  • ☐ תכננתי את האתר הבא שלי על Pages
  • ☐ קראתי את כל 15 מונחי המילון

בפרק הבא: נעבור מאתרים לסביבות פיתוח — GitHub Codespaces. נלמד להקים סביבת עבודה מלאה בענן, עם devcontainer.json, prebuilds, ושליטה בעלויות. תוכלו לערוך את אתר ה-Pages שלכם מכל מקום בעולם, מכל דפדפן, בלי להתקין שום דבר על המחשב.