Menu

HTML Redirect: הפניה עם meta refresh, JavaScript ו-301

הפנו עמוד אחד לאחר עם תגית meta refresh ב-HTML רגיל, עם JavaScript או בשרת. למדו את התחביר של meta refresh, איך לרענן עמוד אוטומטית, למה הפניית 301 בשרת היא הבחירה הטובה יותר, ומה מנועי חיפוש עושים עם כל אחת.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

הפניה עם תגית meta refresh

ב-HTML רגיל, הפניה היא תגית <meta http-equiv="refresh"> ב-<head> של העמוד הישן:

<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

המספר הוא ההשהיה בשניות, אחריו נקודה-פסיק, ואחריה url= והכתובת שאליה עוברים. 0 מפנה ברגע שהעמוד נטען. הנה קובץ שלם של "העמוד עבר". ההשהיה מוגדרת לשעה כדי שהתצוגה המקדימה תישאר במקום; בעמוד אמיתי הייתם משתמשים ב-0 או בכמה שניות:

שני גיבויים הופכים את העמוד לבטוח: הקישור הגלוי (לכל מי שהדפדפן שלו לא עוקב אחרי הרענון, ולמשתמשי קוראי מסך שרוצים לבחור בעצמם), ו-<link rel="canonical">, שאומר למנועי חיפוש איזה URL הוא האמיתי. אם תשנו כאן את ההשהיה ל-0, התצוגה המקדימה עצמה תעבור ל-example.com; לחצו על Reset כדי לקבל את הדוגמה בחזרה.

רענון אוטומטי של עמוד

השמיטו את ה-URL והעמוד טוען את עצמו מחדש אחרי ההשהיה. content="5" טוען מחדש כל 5 שניות. התיבה הראשונה שלמטה היא עמוד קטן עם התגית הזו, כדי שתוכלו לצפות בה: זמן הטעינה שלה קופץ כל 5 שניות, וטקסט שתקלידו בשדה שלה נמחק בטעינה מחדש. התיבה השנייה שומרת על השעון שלה מעודכן עם JavaScript במקום, ושומרת את הטקסט שלכם:

רענון טוען את כל העמוד מחדש, כך שכל מה שהקורא עשה בו נקטע. זה מקובל לעמוד שאף אחד לא מתקשר איתו, כמו מסך סטטוס על קיר. ללוחות בקרה, תוצאות ופידים, עדכנו רק את החלק שמשתנה, כמו שהתיבה השנייה עושה.

הפניה עם JavaScript

כשההפניה תלויה במשהו שרק הדפדפן יודע (הבחירה של המשתמש, מצב התחברות, גודל מסך), השתמשו ב-JavaScript:

// Replaces the current page in the history: Back skips it
location.replace('https://example.com/new-page');

// Adds a history entry: Back returns to this page
location.href = 'https://example.com/new-page';

להפניה, location.replace הוא כמעט תמיד מה שצריך. עם location.href, לחיצה על חזרה נוחתת על העמוד שהפנה, שמפנה שוב, והמשתמש תקוע.

העדיפו הפניה בשרת

meta refresh או סקריפט רצים רק אחרי שהדפדפן הוריד את העמוד הישן. הפניה בשרת עונה לבקשה עם קוד סטטוס והכתובת החדשה, לפני שנשלח HTML כלשהו:

  • 301 (moved permanently) או 308: לעמוד יש בית חדש לתמיד. מנועי חיפוש מעבירים את הדירוג של ה-URL הישן לחדש.
  • 302 (found) או 307: מעבר זמני; ה-URL הישן נשאר הראשי.

איך מגדירים הפניה תלוי בשירות האחסון שלכם. כמה צורות נפוצות:

# Apache (.htaccess)
Redirect 301 /old-page https://example.com/new-page

# nginx (inside a server block)
location = /old-page { return 301 https://example.com/new-page; }

# Netlify or Cloudflare Pages (_redirects file)
/old-page  /new-page  301

השתמשו ב-meta refresh כשאין לכם שום אפשרות לשנות את השרת, למשל באחסון סטטי בלי כללי הפניה. Google מתייחסת ל-meta refresh מיידי כהפניה קבועה ולמושהה כהפניה זמנית, כך שהשהיה של 0 קרובה יותר ל-301.

הפניות מתוזמנות ונגישות

הפניה עם השהיה יכולה להעביר קורא באמצע משפט. הנחיות הנגישות (WCAG) מחשיבות הפניות מתוזמנות לכישלון; הפניה מיידית בסדר. אם חייבים לחכות, כתבו את זה בעמוד ("You will be redirected in 10 seconds"), ותמיד כללו את הקישור כדי שאנשים יוכלו לעבור בקצב שלהם.

טעויות נפוצות

  • לולאת הפניות. שני עמודים שמרעננים זה לזה מקפיצים את הקורא לנצח. בדקו לאן עמוד היעד שולח אנשים.
  • URL יחסי שמצביע למקום הלא נכון. url=new-page מפוענח ביחס ל-URL הנוכחי, כך שמ-/docs/old הוא מוביל ל-/docs/new-page. השתמשו בנתיב מלא כמו url=/new-page כשיש ספק.
  • אין קישור גיבוי. הוסיפו תמיד קישור רגיל לעמוד החדש בגוף העמוד.
  • שימוש ב-location.href להפניות. כפתור החזרה מוביל אז ללולאת הפניות. השתמשו ב-location.replace.
  • שימוש ב-meta refresh כשהשרת בשליטתכם. הגדירו 301 במקום; זה מהיר יותר וברור יותר לכל כלי.

שאלות נפוצות

איך מפנים עמוד HTML לעמוד אחר?

הוסיפו <meta http-equiv="refresh" content="0; url=https://example.com/new"> ל-<head> של העמוד הישן, וקישור רגיל לעמוד החדש בגוף העמוד כגיבוי. אם השרת בשליטתכם, הפניית 301 עדיפה.

איך מפנים אחרי 5 שניות ב-HTML?

קבעו את המספר שלפני הנקודה-פסיק להשהיה בשניות: <meta http-equiv="refresh" content="5; url=https://example.com/new">. כתבו בעמוד שהקורא יופנה, ותנו לו קישור.

איך גורמים לעמוד להתרענן אוטומטית?

השתמשו ב-meta refresh עם השהיה ובלי URL: <meta http-equiv="refresh" content="30"> טוען מחדש את העמוד כל 30 שניות. הוא טוען מחדש את כל העמוד ומפריע לקורא, אז לנתונים חיים עדכון של חלק מהעמוד עם JavaScript בדרך כלל עדיף.

האם הפניית meta refresh רעה ל-SEO?

Google עוקבת אחריה: meta refresh מיידי (השהיה 0) נחשב כמו הפניה קבועה, ומושהה נחשב כמו הפניה זמנית. הפניית 301 בצד השרת היא עדיין הדרך המומלצת, כי היא מהירה יותר וכל סורק ודפדפן מבינים אותה.

איך מפנים עם JavaScript?

השתמשו ב-location.replace('https://example.com/new'). הוא מחליף את העמוד הנוכחי בהיסטוריה, כך שכפתור החזרה לא חוזר לעמוד שהפנה. גם location.href = url עובד, אבל משאיר את העמוד הישן בהיסטוריה.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל