🧭 3 הסוגים של 'עמוד גמור', סקירה ראשונית לפני שצוללים
תקשיבו. אני אפתח עם השיחה הכי שכיחה שיש לי עם לקוחות חדשים. הם אומרים לי, 'שמוליק, מחקתי 500 עמודי בלוג ישנים, אבל גוגל עדיין מציג אותם בתוצאות, ויש לי הררררררה של 404 ב-Search Console'. אני שואל, 'איך מחקת? סתם הסרת מ-WordPress, או החזרת 410?'. הם נועצים בי מבט. רוב המקדמים לא יודעים שיש בכלל הבדל בין 404 ל-410. רובם בכלל לא שמעו על 410. ויש עוד מצב, soft 404, שאף אחד מהם לא יודע שיש לו באתר.
בואו נסדר את זה מההתחלה. יש 3 מצבים שונים שגוגל יכול להיתקל בהם כשעמוד שהיה באינדקס פתאום לא נותן את התוכן שלו. כל אחד מהם הוא status code שונה (או חוסר status code), כל אחד גורר התנהגות שונה של Googlebot, ובכל אחד מהם הפתרון אחר. 404 Not Found, השרת אומר 'העמוד לא נמצא', גוגל לא יודע אם הוא יחזור או לא, אז ימשיך לבדוק שוב ושוב. 410 Gone, השרת אומר 'נמחק לתמיד, אל תחזור', גוגל מסיר מהאינדקס מהר. soft 404, השרת מחזיר 200 OK ('הכל בסדר'), אבל התוכן בעצם אומר 'דף לא נמצא', וגוגל מסיק לבד שזה דף ריק.
ההבדל בין 404 ל-410 הוא לא קוסמטי. זה ההבדל בין 'גוגל ימשיך לבדוק את העמוד הזה במשך חודשים' ל-'גוגל יסיר את זה תוך 24-72 שעות'. אם מחקתם עמוד בכוונה ולתמיד והשארתם 404, אתם מבזבזים crawl budget וסוחבים זנב של 404 ב-Coverage report ל-3-6 חודשים. soft 404 עוד יותר גרוע, גוגל לא יודע שהדף נעלם, וייתכן שיציג אותו בתוצאות עם תיאור של 'דף לא נמצא'. ההבחנה בין שלושת המצבים האלה היא היכולת להחליט אם אתם מנהלים את האתר או שהאתר מנהל אתכם.
במאמר הזה, אני אעבור איתכם על כל אחד מ-3 המצבים האלה לעומק. מה זה אומר טכנית, מתי להשתמש בכל אחד, איך לזהות soft 404 בלי לרדוף אחר כל URL ידנית, איך WordPress ו-Shopify מתנהגים בברירת מחדל (ולמה זה כמעט תמיד לא מה שאתם רוצים), איך להחזיר 410 עם htaccess, ואיך לבנות אודיט 4xx חודשי שתופס את הבעיות לפני שהן הופכות לדליפת תנועה. אם אחרי המאמר אתם עדיין תקועים, יש לכם איך לדבר איתי ישירות. ואגב, השם שמוליק דורינבאום מאחורי המקלדת כאן, 20 שנה של דיבוג עמודי 404, אני אישית טיפלתי בעמודי 'אבל זה היה צריך להיות 410' של אלפי לקוחות. תמיד אותה תבנית, תמיד אותה הפתעה.
🚫 404 Not Found, ההגדרה הקלאסית ומה זה אומר לגוגל
בואו נתחיל בקלאסי. 404 Not Found זה ה-HTTP status code שכולם מכירים. אם תיכנסו ל-URL שלא קיים באתר, רוב הזמן תקבלו דף שאומר 'העמוד לא נמצא', והשרת מאחורי הקלעים מחזיר את הקוד 404. זה התנהגות ברירת מחדל של Apache, Nginx, IIS, וכל שרת web אחר.
מה 404 אומר טכנית
הסטנדרט של HTTP (RFC 9110) מגדיר את 404 ככה, 'השרת לא מצא ייצוג נוכחי של המשאב המבוקש, או לא מוכן לחשוף את קיומו'. שימו לב למילה 'נוכחי'. זה משאיר את האפשרות פתוחה שהמשאב יחזור. 404 = 'לא קיים עכשיו, אבל אולי יחזור'. זה לא 'נמחק לתמיד', זה 'אין כרגע'. ההבחנה הזאת היא ההבדל המלא בין 404 ל-410, וההתנהגות של גוגל סביבה.
איך גוגל מתייחס ל-404
כשגוגלבוט מקבל 404 על URL שהיה באינדקס, הוא לא מסיר אותו מיד. הוא מסמן אותו כ-'אולי בעיה זמנית' וחוזר לבדוק. ושוב. ושוב. רק אחרי שגוגל ראה 404 על אותו URL מספר פעמים לאורך תקופה (לפעמים שבועות, לפעמים חודשים), הוא בסופו של דבר מסיר מהאינדקס. אגב, גם אחרי שהוא הסיר, הוא עדיין יחזור לפעמים לבדוק, 'אולי הם החזירו את העמוד'. זה משחק ארוך.
מהנסיון שלי, בערך 4-12 שבועות. תלוי בכמה גוגל סורק את האתר שלכם (אתר עם authority גבוה שגוגל סורק כל יום יקבל deindex מהר יותר), ובכמה ה-URL היה חשוב (עמוד עם backlinks חיצוניים נסרק יותר, אז יסולק מהאינדקס מהר יותר). בעמודים יתומים בלי backlinks, ראיתי 404 שנשארו ב-Coverage report יותר מ-6 חודשים. לא נראים ב-SERP, אבל מופיעים בדוח כ-'Not found (404)' ומעצבנים.
מתי 404 הוא ההתנהגות הנכונה
- טעות הקלדה ב-URL מצד הגולש (זה הקלאסי, 99% מה-404 הם זה)
- קישור שבור באתר חיצוני שמצביע ל-URL שלא קיים אצלכם
- עמוד שכרגע לא זמין אבל אולי יחזור (אזל, יוחזר למלאי, נמצא בעריכה זמנית)
- URL שגוגל ניחש (לפעמים גוגל מנסה כתובות לוגיות שלא קיימות באתר)
- URLs ישנים שהיו פעם בסייטמאפ ונשארו ב-Discovery של גוגל
404 הוא ברירת המחדל ההגיונית, וברוב המקרים זה התנהגות נכונה. הבעיה היא רק כשמשתמשים ב-404 גם במקרים שבהם אתם בעצמכם יודעים שהעמוד לעולם לא יחזור. אם מחקתם 500 פוסטים ישנים בכוונה תחילה, להחזיר 404 על כל אחד מהם זה לתת לגוגל אות מבולבל, 'אולי טעות זמנית?'. אז הוא חוזר. ושוב. כשהאמת היא 'מחקנו לתמיד, תפסיק לטרוח'. ולזה יש פתרון אחר, שנעבור עליו בפרק הבא.
🪦 410 Gone, ה-status code השנוא והבלתי מנוצל
עכשיו לסטטוס שאף אחד לא מכיר. 410 Gone. ה-HTTP status code שמיועד בדיוק למצב שעליו הלינו לקוחות שלי במשך שנים, 'מחקנו לתמיד, אבל גוגל לא מבין את זה'. 410 הוא ההצהרה הברורה ביותר שאפשר לתת לגוגל, 'העמוד הזה נמחק, הוא לעולם לא יחזור, תסירו מהאינדקס ואל תחזרו לבדוק'.
מה 410 אומר טכנית
הסטנדרט של HTTP (RFC 9110) מגדיר את 410 ככה, 'גישה למשאב היעד אינה זמינה יותר בשרת המקור, והתנאי כנראה קבוע'. שימו לב למילה 'קבוע'. זה ההבדל המהותי מ-404. 404 משאיר את האפשרות פתוחה, 410 סוגר אותה. 410 אומר במפורש, 'זה לא טעות, לא תקלה זמנית, לא בעיה בסרבר. זה החלטה. נמחק לתמיד'.
איך גוגל מתייחס ל-410
גוגל אישר באופן רשמי לאורך השנים (כולל ציטוטים מ-John Mueller שאני אביא בפרק 14) שגוגלבוט מתייחס ל-410 ברצינות רבה יותר מ-404. כשהוא רואה 410, הוא לא חוזר לבדוק מאות פעמים. הוא לא נותן צ'אנס נוסף לעמוד. הוא מסיר מהאינדקס בערך פי 10 מהר מאשר 404. אגב, גם 410 לא מסיר מיד, גוגל עוד עושה בדיקות (אולי השרת התבלבל וצריך להחזיר 404), אבל המהירות הממוצעת היא שונה לחלוטין.
לפי הנסיון שלי, עמוד עם 410 יסולק מהאינדקס תוך 24-72 שעות (אם הוא נסרק תכופות). עמוד עם 404 ייקח 4-12 שבועות לאותו דבר. זה לא הבדל קטן, זאת קפיצה של פי 10 עד פי 30 במהירות. אם אתם מחקתם 5,000 עמודי קטלוג ישנים ב-eCommerce, ההבדל הוא בין שבועיים לחצי שנה של זנב 4xx ב-Coverage.
למה אף אחד לא משתמש ב-410
זאת השאלה שאני שואל את עצמי מאז 2015. התשובה היא תרבותית, רוב המפתחים לא יודעים ש-410 בכלל קיים. הם מכירים את 200, 301, 302, 404, 500, 503. הם פשוט לא יודעים מה זה 410. WordPress לא מציע אותו אוטומטית. רוב התוספים לא מטפלים בו. Shopify לא נותן לך לבחור. אם אתם רוצים 410, ברוב הפלטפורמות אתם צריכים לכתוב את זה ידנית ב-.htaccess או דרך middleware. וזה דורש שתי דברים, שתדעו שזה קיים, ושתעשו את המאמץ. רוב הצוותים פוסחים על שניהם.
מתי 410 הוא ההתנהגות הנכונה
- תוכן שמחקתם בכוונה כחלק מ-content pruning (תוכן ישן/לא רלוונטי)
- מוצרים שירדו מהמדפים לתמיד (לא 'אזל זמנית', אלא 'הופסק לחלוטין')
- עמודי קמפיין/מבצע שהסתיימו ולא יחזרו
- איחוד תוכן שבו לעמוד מסוים אין ערך אבל גם לא רוצים לעשות 301 (כי אין יעד טבעי)
- עמודי טסט/staging שעלו בטעות לפרודקשן
- פוסטים שהיו עם תוכן רע/שגוי שאתם רוצים להוציא מהאינדקס בלי השארת זנב
תקשיבו, אם אתם זוכרים רק דבר אחד מהמאמר הזה, שזה יהיה זה, מחיקה מכוונת = 410, לא 404. זה השינוי הקטן שבעיני שווה כמו workflow שלם של אופטימיזציה.
👻 soft 404, הסיוט שמתחבא ולא נראה לעין
הסטטוס השלישי הוא הכי בעייתי, ולא במקרה. soft 404 לא קיים בכלל בעולם ה-HTTP. אין קוד HTTP בשם 'soft 404'. זה תווית שגוגל ממציאה כדי לתאר מצב מסוים, וזה המצב הכי גרוע מ-3 הסטטוסים, כי הוא מתחבא. אתם לא יודעים שיש לכם soft 404 עד שאתם רואים את זה ב-Search Console, ועד אז כבר הפסדתם תנועה.
מה זה soft 404 בעצם
soft 404 קורה במצב הבא, השרת מחזיר HTTP 200 OK (כלומר 'הכל בסדר, הנה התוכן'), אבל גוגל מסתכל על התוכן ומסיק שזה דף שגיאה או דף ריק. הוא לא רואה תוכן ערכי, רואה רק טקסט כמו 'העמוד לא נמצא', 'אזל מהמלאי', או 'אין תוצאות'. גוגל מבין שלמרות שהשרת אומר 'הכל בסדר', האמת היא שאין כאן עמוד אמיתי לאינדוקס.
למה זה גרוע יותר מ-404 רגיל
במצב 404 רגיל, גוגל מקבל אות ברור (גם אם איטי). במצב 410 הוא מקבל אות חד וברור. במצב soft 404, האות מבולבל, השרת אומר דבר אחד, התוכן אומר דבר אחר. גוגל צריך להחליט לבד. וזה גורר 3 בעיות חמורות, (1) גוגל לא יודע בוודאות שהעמוד גמור, ייתכן שינסה לאנדקס אותו עם הכותרת 'העמוד לא נמצא' או 'אזל מהמלאי'. (2) בזבוז crawl budget, גוגל ממשיך לסרוק עמודים שאין בהם תוכן, זמן שיכול להיות מוקדש לעמודים חדשים. (3) אות איכות שלילי כללי, אם יש לכם 500 soft 404 באתר, גוגל מסיק שהאתר מלא בעמודים מתחזים, וזה משפיע על האות איכות של האתר כולו, לא רק על העמודים האלה.
soft 404 פוגע ברחבי-אתר. גוגל מסיק שאם 500 עמודים שלכם מתחזים, רמת האמון בכל האתר יורדת. עמודים אחרים שלכם, טובים לחלוטין, עלולים לאבד מיקומים בגלל זה. זה לא בעיה מקומית של 'העמוד הזה לא טוב', זאת בעיה רוחבית של 'האתר הזה מלא בעמודי-לא-נמצא שמתחזים'.
הסיבות העיקריות ל-soft 404
יש כמה דפוסים שגורמים ל-soft 404 כמעט תמיד. נעבור עליהם לעומק בפרק 9, אבל לסקירה,
דף 404 מותאם אישית שמחזיר 200
עיצבתם דף יפה עם הכותרת 'העמוד לא נמצא', אבל השרת מגיש אותו עם status 200 במקום 404.
מוצר באיקומרס שאזל
עמוד עם הכותרת 'אזל מהמלאי' ובלי תיאור עשיר, גוגל מסיק soft 404.
עמוד תוצאות חיפוש פנימי עם 0 תוצאות
'לא נמצאו תוצאות לחיפוש', גוגל רואה דף ריק.
עמוד JavaScript-rendered שהרינדור נכשל
גוגל רואה רק 'Loading...' ומסיק שאין תוכן.
עמוד עם תוכן זעיר (פחות מ-50 מילה משמעותיות)
גוגל לא רואה ערך, מסיק שזה תוכן מתחזה.
בקיצור, soft 404 זה הסטטוס שמתחבא ולא נראה לעין עד שאתם פותחים את Search Console. ויש לעמוד דק להפוך לסיוט רוחבי בלי שתשימו לב, בייחוד באתרי איקומרס גדולים. המדריך המלא ל-soft 404 שלי נכנס לעוד עומק על איך לפתור, הפרק הזה רק מסביר מה זה.
⚡ השוואת מהירות deindex, 410 פי 10 מ-404 (לפי נסיון)
זה הפרק שאני מבקש מכל לקוח לקרוא לאט. כי המספר הזה, פי 10 מהר יותר, הוא ההבדל בין אודיט שלוקח שבועיים לאודיט שלוקח חצי שנה. בואו נפרק את ההבדל.
איך גוגל מתעדף סריקה חוזרת
גוגלבוט לא סורק את כל ה-URLs באותו קצב. הוא מקצה crawl budget לכל אתר, ובתוך התקציב הוא מתעדף לפי חשיבות (PageRank), עדכניות, ושינוי ידוע. עמודים שמחזירים 404, גוגל לא סומך עליהם מיד. הוא חושב 'אולי תקלת שרת זמנית'. הוא יחזור עוד 3 ימים, ושוב עוד 10 ימים, ושוב עוד חודש. רק אחרי שגוגל ראה 404 מספיק פעמים על אותו URL לאורך זמן, הוא בסופו של דבר מסיר אותו מהאינדקס.
למה 410 שונה
כש-גוגל רואה 410, ההודעה שונה לחלוטין. 'נמחק לתמיד'. גוגל לא צריך לבדוק עוד. הוא רושם 'OK, הסר את העמוד מהאינדקס'. מהירות הסילוק בפועל תלויה בכמה גוגל סורק את האתר, אבל סדר הגודל הוא ימים, לא שבועות.
| סטטוס | מהירות deindex ממוצעת | בדיקות חוזרות של גוגל | השפעה על crawl budget |
|---|---|---|---|
| 404 Not Found | 4-12 שבועות | עשרות, גוגל ממשיך לבדוק לחודשים | בזבוז משמעותי, בעיקר באתרים גדולים |
| 410 Gone | 24-72 שעות | בודדות, גוגל מקבל את ההודעה | מינימלי, גוגל מפסיק לסרוק תוך זמן קצר |
| soft 404 | חודשים, אם בכלל | גוגל לא בטוח שהעמוד גמור | גרוע, גוגל סורק וגם מנסה לאנדקס |
| 301 (לעמוד תקין) | 2-6 שבועות (להעברת authority) | גוגל סורק את היעד ומבין את ההפניה | אפסי, גוגל מבין מיד |
למה זה משנה מבחינה עסקית
תקשיבו, אם אתם אתר קטן עם 100 עמודים, ההבדל הזה לא דרמטי. אבל אם אתם אתר eCommerce עם 50,000 SKUs ועם 5,000 מוצרים שיורדים מהמדפים בכל שנה, ההבדל הוא תהומי. עם 404, יש לכם זנב של 5,000 שורות אדומות ב-Coverage report למשך חצי שנה. עם 410, הזנב מתאפס תוך 2-3 שבועות. בנוסף, crawl budget שמוקדש לבדיקת עמודים שכבר נמחקו, זה crawl budget שלא מוקדש לאינדוקס של מוצרים חדשים. בקטסטרופה הקלאסית, אני ראיתי לקוחות שמוצרים חדשים שלהם מקבלים אינדוקס באיחור של שבועיים בגלל ש-גוגל עסוק בבדיקת 30,000 עמודי 404 ישנים.
אם מחקתם עמוד בכוונה ולתמיד, החזירו 410. אם מחקתם בטעות או כי תקלת DB, החזירו 404 עד שתסדרו (גוגל יחזור לבדוק). אם מחקתם והעמוד שווה ערך, עשו 301 לעמוד הקשור הקרוב ביותר. 3 מצבים, 3 פעולות, לא לערבב.
✅ מתי להשתמש ב-404 (ברירת מחדל, ולא רק)
אחרי שדיברנו על המהירות, בואו נחזור ל-404 ונסביר מתי הוא בעצם ההתנהגות הנכונה. כי למרות שאני דחפתי הרבה לכיוון 410 בפרקים הקודמים, יש מצבים שבהם 404 הוא ההחלטה הנכונה.
1. טעויות הקלדה של גולשים
הסיטואציה הקלאסית. גולש הקליד URL לא נכון, פיספס אות, או הגיע מקישור שבור. השרת לא יודע אם הגולש התכוון לעמוד שקיים אחר, או באמת ל-URL הזה שלא קיים. החזרת 404 היא ההגיונית, 'אין כאן, נסה שוב'. במקרה הזה זה גם תקין שגוגלבוט יבדוק בעוד שבועיים, כי URL כזה אולי בכלל לא קיים ביומן הסריקה של גוגל ולא צריך deindex מהיר.
2. קישורים שבורים מאתרים חיצוניים
אתר אחר מקשר ל-URL שלכם, אבל הקישור שגוי (פיספסו תו, או העמוד נמחק מאז ולא עשו ניטור). גם פה, 404 זה תקין. גוגל יבדוק, יראה 404, וייתכן שיסיר את ה-URL מ-Discovery. אבל אם תרצו להציל את האותורטי של הקישור הזה, התשובה היא לא 410, היא 301 לעמוד הקרוב הרלוונטי.
3. עמודים שזמנית לא זמינים
תרחיש שכיח באיקומרס, מוצר אזל זמנית. מתכננים להחזיר אותו למלאי בעוד שבועיים. במקרה הזה, 404 לא תקין (כי העמוד הולך לחזור) ו-410 בטח לא תקין. הטיפול הנכון הוא להחזיר 200 עם תוכן חכם, 'אזל זמנית', 'הודיעו לי כשחוזר', תיאור המוצר עדיין במלואו, מוצרים דומים. גוגל ימשיך לאנדקס, וכשהמוצר יחזור, אין אינדוקס שצריך לבנות מחדש.
אם תחזירו 404 על מוצר שאזל זמנית, ייתכן שגוגל יסיר אותו מהאינדקס. כשהמוצר יחזור למלאי בעוד שבועיים, העמוד צריך להיכנס חזרה לאינדקס, ולפעמים זה לוקח עוד שבועות. בינתיים איבדתם את כל המיקומים שהמוצר היה משיג. זה דפוס שראיתי שורט-פיוז לקוחות eCommerce לא פעם.
4. URLs שגוגל ניחש או יצר באופן אוטומטי
לפעמים גוגל מנסה URLs לוגיים שלא קיימים באתר שלכם, על סמך דפוסים ש-Googlebot זיהה. למשל אם יש לכם /products/123 ו-/products/124, גוגל עלול לנסות /products/125 גם אם לא קישרתם אליו אף פעם. החזרת 404 על URLs כאלה זה תקין, גוגל יבין מהר ולא ינסה שוב.
5. עמודים שגוגל מצא בסייטמאפים ישנים
סייטמאפ ישן שלכם הכיל URLs שכבר לא קיימים. עדכנתם את הסייטמאפ, אבל גוגל עדיין יש לו זיכרון של URLs ישנים. אם הם נמחקו לתמיד, עדיף 410. אם הם נמחקו כי שינוי מבני (rebuild של אתר וקיצור URLs), עדיף 301 לעמודים החדשים. 404 כברירת מחדל זה תקין אם אין יעד טבעי.
ההיגיון הכללי
השאלה שאני שואל את עצמי לפני שאני בוחר בין 404 ל-410 היא תמיד אחת, 'האם אני יודע בוודאות שהעמוד הזה לא יחזור?'. אם התשובה היא 'כן', זה 410. אם התשובה היא 'לא יודע', זה 404. פשוט ככה. ההפרדה הזאת מסירה את הבלגן ב-95% מהמקרים.
🗑 מתי להשתמש ב-410 (מחיקה מכוונת ולתמיד)
עכשיו בואו נפרט את מצבי ה-410 הקלאסיים. כל אחד מהם הוא דוגמה למצב שראיתי בלקוחות, וכל אחד מהם הוא מצב שבו 404 היה ההתנהגות בפועל אבל היה צריך להיות 410.
1. Content pruning של תוכן ישן/לא רלוונטי
אתם עוברים על הבלוג שלכם ב-2026 ורואים 500 פוסטים מ-2014 על כלים שכבר לא קיימים, מוצרים שירדו מהמדפים, ועדכוני אלגוריתם של גוגל שכבר לא רלוונטיים. החלטתם למחוק. זה 410 קלאסי. הפוסטים האלה לא יחזרו, אין להם ערך, ואין יעד טבעי ל-301 (אם תעשו 301 של 500 פוסטים שונים לעמוד הבית, גוגל יסמן את זה כ-soft 404). תחזירו 410 ותגמרו את העניין. גוגל יסיר תוך ימים, ה-Coverage report יתנקה תוך שבועיים.
2. מוצרים שירדו לתמיד מהמדפים
מוצר במלאי הופסק. לא יורד זמנית, לא יוחלף בגרסה חדשה, פשוט נגמר וזהו. אם המוצר מקבל 404, גוגל יבדוק שוב ושוב במשך חודשים, וה-URL יישאר ב-Coverage report כ-'Not found' עם זנב ארוך. עם 410, סולק בתוך 48 שעות.
עבור מוצר שהופסק, הטיפול האידיאלי הוא, (1) אם יש מוצר חלופי דומה מאוד באותה קטגוריה, 301 ליעד הזה. (2) אם יש קטגוריה רלוונטית בלי מוצר חלופי ספציפי, 301 לעמוד הקטגוריה. (3) אם אין יעד טבעי, 410. הסדר הזה משמר authority איפה שאפשר, וחותך מהר איפה שאי אפשר.
3. עמודי קמפיין/מבצע שהסתיימו
הקמפיין 'Black Friday 2024' הסתיים. הדף לא רלוונטי יותר. אם תשאירו אותו 200, גוגל אולי עוד יציג אותו בתוצאות עם תאריך 2024 שיגרום לגולש לרגוז. אם תחזירו 404, גוגל ימשיך לבדוק לחודשים. אם תחזירו 410, גוגל יסלק תוך ימים. או, אופציה מעודנת יותר, 301 לעמוד 'מבצעים נוכחיים' שתמיד אקטואלי.
4. איחוד תוכן בלי יעד טבעי
איחוד עמודים בעיקרון משתמשים ב-301. אבל לפעמים יש לכם עמוד שאתם רוצים להוציא מהמשחק והוא לא באמת shouldn't redirect לאף עמוד אחר. למשל, פוסט שכתבתם וגיליתם שמכיל מידע שגוי, ואין עמוד אחר באתר שיכול 'להחליף' אותו. ובמקום להשאיר 301 לעמוד הבית (שגוגל מסמן כ-soft 404), הפתרון הוא 410.
5. עמודי טסט/staging שעלו לפרודקשן בטעות
קלאסי. מישהו פרסם בטעות עמוד /test-new-design/ או /staging-product-x/ לפרודקשן, גוגל ראה ואנדקס. רוצים להוציא מהאינדקס מהר ובלי שיתחזק. 410 הוא ההחלטה הנכונה. תוסיפו שורה ב-htaccess, גוגל יסיר תוך 48-72 שעות. ב-404 זה ייקח שבועות, וכל הזמן הזה העמוד 'הסודי' שלכם יופיע ב-SERP.
6. עמודים שעברו עידכון רגולטורי או משפטי
פוסט ישן שדרש שינוי משפטי (לדוגמה דרישת רגולטור להסיר טענה מסוימת) ואין דרך לתקן בלי לכתוב מחדש. אם תעשו 301 לעמוד דומה, הטענה הבעייתית עוד עלולה להופיע ב-cached versions של גוגל. עם 410, גוגל יסיר את העמוד מהאינדקס ויסיר גם את ה-cached version. ניקוי אמיתי.
ההבחנה החשובה
שימו לב, 410 הוא לא 'תחליף תמיד ל-404'. הוא לתת לגוגל אות חד וברור כשאתם בטוחים שהעמוד לא יחזור. זה כלי כירורגי, לא פטיש. השתמשו בו במקומות הנכונים, וזה ישפר את האודיט שלכם דרמטית.
🔍 איך מזהים soft 404 ב-Search Console, workflow מעשי
בניגוד ל-404 ו-410, ש-Search Console מסמן בצורה ברורה ('Not found (404)'), soft 404 מקבל סטטוס משלו. בדוח Pages report (לשעבר Coverage). זה בעצם הדרך הוודאית היחידה לזהות soft 404 בלי לבדוק עמוד-עמוד ידנית. בואו נעבור על איך לעשות את זה נכון.
שלב 1, פתחו את Pages report ב-Search Console
היכנסו ל-Search Console, ובחרו את ה-property של האתר. לחצו על Pages (בתפריט הצדדי, תחת 'Indexing'). תראו טבלה עם 2 קטגוריות עליונות, 'Indexed' (עמודים שבאינדקס) ו-'Not indexed' (עמודים שלא באינדקס). soft 404 הוא תחת 'Not indexed'.
שלב 2, מצאו את שורת 'Soft 404'
בטבלת ה-'Why pages aren't indexed', גוללו עד שתמצאו את שורת 'Soft 404'. אם יש לכם 0, מצוין, הכל נקי. אם יש לכם מספר חיובי, יש מה לטפל. לחצו על השורה כדי לראות את ה-URLs.
שלב 3, ניתוח דפוסים
גוגל מציג עד 1,000 דוגמאות של URLs עם soft 404. אם יש לכם פחות מ-1,000, זה כל הרשימה. אם יש לכם יותר (תראו 'Top 1,000 URLs of N total'), אתם רואים רק מדגם. עכשיו תחפשו דפוסים, האם רוב ה-URLs הם /products/SKU? (סימן למוצרי איקומרס שאזלו), או /search?q=? (חיפוש פנימי בלי תוצאות), או /tag/X/? (טאגים ריקים), או דף 404 מותאם שעובד עם 200? (זה הקלאסיק).
ייצאו את הרשימה ל-Google Sheets או CSV (כפתור Export בפינה הימנית עליונה). בדקו עם COUNTIF או pivot איזה folder/path הכי שכיח. ב-95% מהמקרים, 80% מה-soft 404 מגיעים מאותו דפוס אחד שצריך לתקן.
שלב 4, בדיקה ידנית של דוגמה
קחו 3-5 URLs מהרשימה ובדקו ידנית מה גוגל רואה. השתמשו בכלי URL Inspection ב-Search Console, הזינו URL ספציפי ולחצו 'Test Live URL'. ראו את ה-screenshot שגוגל מקבל ואת ה-HTML שהוא רואה. בדרך כלל אחת מ-3 הסיבות מתבררת מיד, התוכן באמת ריק/דק, או הרינדור נכשל וגוגל רואה רק 'Loading...', או הדף מציג 'אזל' בלי תיאור אחר.
שלב 5, בדיקת status code ידנית
בנוסף, בדקו ידנית עם curl מה status code השרת מחזיר על ה-URL. עוד נדבר על curl בפרק 16, אבל הפקודה היא,
curl -I https://yoursite.co.il/the-url/אם השרת מחזיר 200, וגוגל סימן soft 404, זה מאשר שגוגל הסיק לבד. אם השרת מחזיר 404 או 410, גוגל לא היה צריך לסמן soft 404, ויש לכם באג ב-Search Console (קורה לעיתים נדירות).
שלב 6, סדרי עדיפויות
לא כל soft 404 הוא דחוף לתיקון. הסדר שלי, (1) עמודים עם הרבה backlinks חיצוניים (איבוד authority גדול). (2) עמודי מוצר/קטגוריה ראשיים (פגיעה ישירה בהמרות). (3) עמודי בלוג שמדורגים על keywords טובים (פגיעה ישירה בתנועה). (4) עמודי טאגים/חיפושים אוטומטיים (פעם אחת מטפלים בדפוס + גמרנו). רוב הזמן 80% מהבעיה היא דפוס #4, ותיקון אחד מתקן את הכל.
🪤 הסיבות הנפוצות ל-soft 404 (custom 404, JS rendering, ועוד)
עכשיו שאתם יודעים איך לזהות soft 404 ב-Search Console, בואו נעבור על הסיבות הספציפיות שגורמות לו. כל אחת מהן דורשת פתרון אחר.
סיבה 1, דף 404 מותאם אישית שמחזיר 200
הקלאסיק. עיצבתם דף שגיאה יפה עם הכותרת 'העמוד לא נמצא', אבל השרת מגיש אותו עם HTTP status 200 OK במקום 404. גוגל קורא את הכותרת ('לא נמצא'), מסיק שזה דף שגיאה, וסומן soft 404. הפתרון, וודאו שדף 404 שלכם מוגש עם status 404. בוורדפרס יש פלאגינים שבטעות משנים את זה.
סיבה 2, JavaScript-rendered עם רינדור כושל
באתרי React/Vue/Angular, גוגל מקבל HTML ראשוני ריק (רק <div id="root"></div>), ומחכה שה-JS ירוץ. אם ה-JS נכשל (API לא עונה, race condition), גוגל רואה רק 'Loading...'. עמוד ריק = soft 404.
סיבה 3, מוצרי איקומרס שאזלו
במקום להציג את העמוד עם תיאור מלא + הודעת 'אזל זמנית', הפלטפורמה מציגה רק 'מוצר לא זמין' עם 200. גוגל רואה כותרת 'לא זמין' בלי תוכן, מסיק soft 404. הפתרון נדון בפרק 12.
סיבה 4, עמודי חיפוש פנימי בלי תוצאות
גולש חיפש משהו, לא היו תוצאות. השרת מציג /search?q=keyword&results=0 עם הודעה 'לא נמצאו תוצאות'. גוגל סורק את ה-URL (בגלל קישור פנימי), רואה דף ריק עם 200, מסיק soft 404. אם יש לכם מאות עמודי חיפוש באינדקס, יש לכם פצצה. הפתרון, חסימת /search? ב-robots.txt.
פלאגיני חיפוש מתקדם (Relevanssi, SearchWP) יוצרים URLs לכל חיפוש שמשתמש מבצע. גוגל סורק ויוצר soft 404 המוני. הפתרון, הוסיפו Disallow: /?s= ב-robots.txt.
סיבה 5, עמודים עם תוכן זעיר
עמוד עם פחות מ-50 מילים משמעותיות, בלי תוכן ערכי. דוגמאות, עמודי קטגוריה בלי מוצרים, עמודי טאגים בלי פוסטים, עמודי placeholder ('בקרוב'), עמודי profile בלי אקטיביות.
סיבה 6, JavaScript redirect במקום 301
במקום להחזיר 301 בצד השרת, מישהו השתמש ב-window.location = '/new-url' או meta refresh. גוגל רואה HTML ראשוני שאומר 'Redirecting...' בלי תוכן, מסיק soft 404. החזירו 301 בצד השרת תמיד.
סיבה 7, עמודים שדורשים login
עמודי membership שמציגים 'נא להתחבר' לגולשים לא מחוברים, גוגל רואה את הגרסה של 'נא להתחבר' ולא את התוכן האמיתי. soft 404 המוני. הוסיפו noindex לעמודים שדורשים login.
סיבה 8, עמודים עם תוכן AI גנרי
הסיבה החדשה של 2025-2026. תוכן AI-generated גנרי לחלוטין (בלי ערך מוסף, בלי דוגמאות) נחשב לתוכן ריק. גם 1,500 מילים של רהיטות AI גנרית עלולות להיות soft 404, בעיקר במאות עמודי תבנית.
בקיצור, הסיבה הכי שכיחה היא #1 (custom 404 עם 200), ואחריה #2 (JS rendering). פתרון שתי אלה מנקה 70-80% מה-soft 404 ברוב האתרים.
📰 WordPress ו-4xx, ההתנהגות בברירת מחדל ובתוספים
WordPress הוא הפלטפורמה הכי שכיחה באינטרנט, וגם הפלטפורמה שבה אני רואה הכי הרבה בלבולים סביב 404/410. בואו נסדר את זה.
ההתנהגות בברירת מחדל
בברירת מחדל, WordPress מטפל ב-URL לא קיים ככה, הוא מנסה למצוא התאמה ב-routing, אם לא מוצא, הוא טוען את template 404.php מהthemeה. בתאוריה, status הוא 404. בפועל, יש כמה בעיות נפוצות.
בעיה 1, template 404.php של theme שלא מכריז status
תבניות (themes) מסוימות כותבים את 404.php ככה שהוא מציג את התוכן, אבל הוא לא מוסיף את ה-HTTP header של 404. במקרה כזה, השרת מחזיר 200 OK, וגוגל מסיק soft 404. בדיקה, הריצו curl -I https://yoursite.co.il/some-random-url-12345/ וראו את ה-status. אם זה 200, יש לכם בעיה. אם זה 404, אתם בסדר.
בעיה 2, פלאגיני SEO שגורמים soft 404
חלק מהפלאגינים (במיוחד פלאגיני 'תיקון 404' או 'redirect manager') יכולים בטעות לשנות status codes. למשל, פלאגין שמפנה את כל ה-404 לעמוד הבית עם 302 במקום להחזיר 404 או לעשות 301 כיוון מטופל. תוצאה, גוגל רואה 302 לעמוד הבית, מסיק soft 404 רוחבי. הפתרון, אל תפנו אוטומטית 404 לעמוד הבית. או תשאירו 404 (אם בלאי הזה תקין), או תעשו 301 ספציפי לעמוד הקרוב הרלוונטי.
מישהו אומר 'אני שונא 404, אז אני אפנה את כל 404 לעמוד הבית'. הוא משתמש בפלאגין שעושה 301 מכל URL לא קיים לעמוד הבית. תוצאה, גוגל מסיק soft 404 על כל ה-301-ים האלה, כי עמוד הבית הוא לא 'יעד הגיוני' לתוכן ספציפי שנמחק. הסבר של John Mueller, 'אם 100 URLs שונים מפנים כולם לעמוד הבית, גוגל מבין שזה לא הפניה אמיתית, אלא ניסיון להחביא 404'.
פתרון 410 ב-WordPress
WordPress לא מציע 410 כאופציה native. אבל יש 2 דרכים נקיות,
פלאגין Redirection
הפלאגין הפופולרי 'Redirection' (10M+ התקנות) תומך ב-410 כיעד. אתם הולכים ל-Tools > Redirection, מוסיפים rule חדש, וב-'Action' בוחרים 'Pass-through' או 'Error (404)'. בגרסאות חדשות יש אופציה ל-'Gone (410)' ישירות. אם אין, אפשר להוסיף קוד ב-functions.php של theme.
htaccess ידני
אם יש לכם רק כמה עשרות URLs להחזיר 410, הוסיפו ב-.htaccess שורה כמו
RedirectMatch 410 ^/old-post-slug/?$. לרשימה של מאות, עדיף פלאגין.
הגדרה ב-functions.php של ה-theme
אם אתם רוצים 410 דינמי (למשל לכל פוסט עם status 'trash' מסוים), אפשר להוסיף ל-functions.php,
add_action('template_redirect', function() {
$deleted_slugs = ['old-post-1', 'old-post-2'];
$request = trim($_SERVER['REQUEST_URI'], '/');
if (in_array($request, $deleted_slugs)) {
status_header(410);
nocache_headers();
include(get_query_template('410'));
exit;
}
});פלאגינים שאני ממליץ עליהם לטיפול ב-4xx
- Redirection (קלאסי, חינמי, תומך ב-410)
- Rank Math (פלאגין SEO שמציע ניהול redirects + 410 בתוסף בתשלום)
- Yoast SEO (גם תומך ב-redirects + 410 בתוסף Premium)
- Redirection Manager pro (פלאגין ייעודי לאתרים גדולים)
באופן כללי, אם יש לכם פחות מ-100 URLs לטיפול, Redirection החינמי מספיק לחלוטין. אם אתם eCommerce עם אלפי SKUs שמחליפים בכל חודש, שווה להשקיע ב-תוסף בתשלום שיש לו ממשק יותר טוב לבולק.
🛒 Shopify ו-4xx, האתגר של מוצרים שנמחקו
Shopify הוא הפלטפורמה הכי שכיחה ל-eCommerce בעולם, אבל המודל שלה לטיפול ב-URLs מחוקים הוא בעייתי לחלוטין מבחינת SEO. בואו נפרק.
מה Shopify עושה בברירת מחדל
כשמוחקים מוצר ב-Shopify (גם 'Delete product' וגם 'Archive product'), ה-URL של המוצר חוזר עם 404. עד כאן בסדר. אבל יש לפלטפורמה כמה חולשות. (1) אין אפשרות native להחזיר 410. Shopify לא נותן לכם לבחור status code, רק 404. (2) אין אפשרות native ל-bulk redirects מ-CSV, חייבים להוסיף ידנית או דרך אפליקציה. (3) עמודי קטגוריה (collections) שנמחקו מוצגים כ-404, ולא ניתן להחזיר 410 גם להם.
הפתרונות שמשתמשים בהם בפועל
יש 3 גישות פופולריות,
301 לקטגוריה הראשית
במקום למחוק את המוצר, יוצרים 301 לעמוד הקטגוריה. יתרון, שומר את ה-authority ומחזיר את הגולש לתוכן רלוונטי. חסרון, אם עושים את זה למאות מוצרים שמפנים כולם לאותה קטגוריה, גוגל עלול לסמן soft 404 (כפי שדיברנו בפרק WordPress).
Apps צד שלישי שמטפלות ב-410
יש כמה apps כמו 'SEOAnt', 'TinyIMG', ו-'SEO Manager' שמוסיפות יכולת להחזיר 410 על URLs מחוקים. הן עובדות דרך editing של theme.liquid או דרך middleware. לאתרי eCommerce גדולים, שווה את ההשקעה.
שמירת העמוד עם תוכן עשיר ('soft delete')
במקום למחוק את המוצר, משאירים אותו עם תיאור מלא + הודעה 'הופסק, ראו מוצרים דומים' + רשימה של חלופות. עמוד נשאר 200, לא 404, ולא soft 404 (כי יש תוכן עשיר). יתרון, שומר את כל authority של העמוד. חסרון, צריך לעדכן את המלאי לפילטרים שהמוצר לא יופיע יותר במסחר.
לרוב הלקוחות שלי, המודל הוא, (1) מוצר אזל זמנית = השארת העמוד 200 עם תיאור מלא + הודעה 'יוחזר בקרוב'. (2) מוצר הופסק לתמיד עם חלופה ספציפית באותה קטגוריה = 301 לחלופה. (3) מוצר הופסק לתמיד בלי חלופה = שמירת העמוד 200 עם תוכן 'הופסק, ראו קטגוריה' + רשימת מוצרים דומים מאותה קטגוריה. המוצר לא מופיע יותר במסחר אבל ה-URL עדיין משדר תוכן ערכי. הימנעות מ-404 בכלל ב-eCommerce אם רק אפשר.
מה Shopify לא נותן לכם לעשות
- להחזיר 410 native בלי app חיצוני
- לעשות bulk import של redirects מ-CSV (יש סינגל בלבד)
- לכוון את ה-canonical של עמודי פילטרים
- לחסום פרמטרי URL ב-robots.txt בצורה גמישה
- להגדיר HTTP headers מותאמים ל-URLs ספציפיים
סייטמאפ של Shopify והבעיה איתו
Shopify יוצר sitemap.xml אוטומטית עם כל המוצרים הפעילים. כשמוחקים מוצר, הוא נופל מהסייטמאפ אוטומטית. עד כאן בסדר. אבל יש בעיה, עמודי הקטגוריה הריקים (collections בלי מוצרים) לא נופלים מהסייטמאפ. גוגל ימשיך לסרוק אותם, יראה דף ריק, וסומן soft 404. הפתרון, סקריפט תקופתי שבודק collections ריקים ומעלים את מהסייטמאפ ידנית.
סיכום ההמלצה ל-Shopify
השקיעו ב-app מקצועית לניהול redirects ו-410 (לא יקר), הימנעו מ-404 המוני, העדיפו 301 לחלופה ספציפית כשיש, ושמרו עמודים עם תוכן עשיר עבור מוצרים שהופסקו בלי חלופה. Shopify לא נותן לכם את הכלים המקסימליים, אבל אפשר לבנות workflow שעובד.
📦 איקומרס, out-of-stock מול discontinued, ההבחנה הקריטית
בלב כל בעיית 4xx באיקומרס יש שאלה אחת עיקרית, האם המוצר אזל זמנית או הופסק לתמיד?. ההבחנה הזאת קובעת את הטיפול הנכון, וטעות בה גורמת לאיבוד מיקומים או חוויית משתמש רעה.
אזל זמנית (Out of Stock)
המוצר יוחזר למלאי בעוד שבוע, חודש, או 3 חודשים. בכל מקרה, יוחזר. הפעולה הנכונה, השאירו את העמוד 200 עם תוכן עשיר. שמרו תיאור מלא, תמונות, ביקורות, מפרט. הוסיפו הודעה ברורה 'אזל זמנית', אפשרות 'הודיעו לי כשחוזר' (לידים), ורשימת מוצרים דומים שכן זמינים. גוגל ימשיך לאנדקס, וכשהמוצר יחזור אתם כבר ב-SERP בלי לחכות.
הופסק לתמיד (Discontinued)
המוצר לא יחזור. אולי הוחלף בגרסה חדשה, אולי היצרן הפסיק לייצר. הפעולה הנכונה תלויה בקיומה של חלופה,
יש חלופה ספציפית באותה קטגוריה
מוצר v3 הופסק כי יצא v4. עשו 301 מ-v3 ל-v4. שומר authority, מעביר לחלופה הטבעית.
אין חלופה ספציפית אבל יש קטגוריה רלוונטית
'נעלי Nike Pegasus 30' הופסקו ואין דגם ישיר. 301 לקטגוריה 'נעלי Nike Pegasus' או 'נעלי ספורט Nike'. אזהרה, אם 200 מוצרים מפנים כולם לאותה קטגוריה, גוגל עלול לסמן soft 404.
אין חלופה ואין קטגוריה רלוונטית
אופציה א', 410 (נקי ומהיר). אופציה ב', השארת העמוד עם תוכן 'הופסק, ראו קטגוריות אחרות' + רשימה (משמר authority, אבל מסתכן ב-soft 404 אם התוכן לא עשיר).
הטעות הכי שכיחה היא להתייחס ל-'אזל זמנית' ול-'הופסק לתמיד' באותו אופן. מוצר שאזל ל-3 שבועות מקבל 404, מאבד את האינדקס, וכשהמלאי חוזר העמוד צריך להיכנס מחדש מאפס. ראיתי לקוחות שאיבדו מיקומים של מוצרים פופולריים בגלל זה. האבחנה בין 'זמנית' ל-'לתמיד' היא הכי חשובה.
מוצרים עונתיים
מתנות חג מולד שמופיעות בנובמבר ויורדות בינואר, מה עושים? השאירו 200 כל השנה, עם הודעה ספציפית בעונה הלא נכונה ('יחזור בעוד 8 חודשים, הירשמו להודעה'). האינדקס נשמר, וכשהעונה חוזרת אתם מיד ב-SERP. אל תחזירו 404 על מוצרים עונתיים, זאת טעות יקרה.
גרסאות (variants) של מוצר
מוצר עם 5 גוונים, 3 הופסקו והשניים נשארו. לא להחזיר 404 על הגרסאות. השאירו את אותו עמוד מוצר, סמנו את הגוונים שהופסקו כ-'לא זמין'. גוגל ימשיך לאנדקס את עמוד המוצר, כל ה-authority נשמרת.
צ'ק ליסט לאיקומרס
- הבחנו בין 'אזל זמנית' ל-'הופסק לתמיד' לכל מוצר
- מוצרים שאזלו = 200 עם תוכן עשיר, לא 404
- מוצרים שהופסקו עם חלופה = 301 לחלופה
- מוצרים שהופסקו בלי חלופה = 410 או 301 לקטגוריה הרלוונטית
- מוצרים עונתיים = 200 כל השנה עם הודעה לעונה
- גרסאות שהופסקו = 'לא זמין' באותו עמוד, לא 404
- קטגוריות שהתרוקנו = 410 או 301 לקטגוריה ההורה
⚙️ 410 עם htaccess, הקוד המעשי לאתרים על Apache
אם האתר שלכם רץ על Apache (וזה רוב האתרים בעולם, כולל רוב ה-WordPress ו-Hostinger ו-SiteGround), הדרך הכי נקייה להחזיר 410 על URL ספציפי או קבוצה של URLs היא דרך .htaccess. בואו נעבור על הסינטקס.
החזרת 410 על URL בודד
הסינטקס הבסיסי,
RedirectMatch 410 ^/old-post-slug/?$זה אומר ל-Apache, 'אם גולש מבקש /old-post-slug/ או /old-post-slug, החזר status 410'. ה-?$ מאפשר slash סופי או בלעדיו. ה-^ מבטיח התאמה מתחילת הנתיב.
החזרת 410 על קבוצה של URLs בפורמט דומה
אם יש לכם דפוס שאתם רוצים להחזיר 410, לדוגמה כל הפוסטים תחת folder מסוים,
RedirectMatch 410 ^/old-category/.*$זה אומר, 'כל URL שמתחיל ב-/old-category/ יחזיר 410'. שימושי כשהורדתם קטגוריה שלמה.
החזרת 410 על רשימת URLs ספציפיים
אם יש לכם 50 URLs ספציפיים שצריכים 410, אפשר לשרשר,
RedirectMatch 410 ^/(old-post-1|old-post-2|old-post-3)/?$
RedirectMatch 410 ^/products/(sku-123|sku-456|sku-789)/?$שילוב עם 301 ל-URLs אחרים
סינריו טיפוסי, חלק מהעמודים שמחקתם יש להם חלופה (301), חלקם לא (410). סדר ההכלל ב-.htaccess חשוב, Apache קורא מלמעלה למטה ועוצר על ההתאמה הראשונה. אז קודם תכתבו את 301-ים הספציפיים, ואז את 410-ים,
# 301 ספציפיים תחילה
Redirect 301 /old-product-1/ /new-product-1/
Redirect 301 /old-category-shoes/ /shoes/
# אחר כך 410 על הכלל
RedirectMatch 410 ^/old-category/.*$
RedirectMatch 410 ^/discontinued-line/.*$בכל פעם שאתם משנים את ה-.htaccess, בדקו עם curl שזה עובד. curl -I https://yoursite.co.il/old-post-slug/ אמור להחזיר HTTP/2 410. אם חזר 404 או 200, יש בעיה בסינטקס. הסינטקס של Apache רגיש, רווח לא נכון או tab לא נכון יכול לשבור הכל.
הגדרה ל-Nginx (לא Apache)
אם האתר שלכם על Nginx, הסינטקס שונה. ב-Nginx אין .htaccess, עורכים את קובץ ה-config הראשי או virtual host,
location = /old-post-slug/ {
return 410;
}
location ~ ^/old-category/.*$ {
return 410;
}אחרי שינוי בקובץ Nginx, צריך reload, sudo nginx -s reload. בלי זה השינויים לא נכנסים.
הגדרה ל-Cloudflare/CDN
אם יש לכם Cloudflare מול האתר, אפשר להגדיר 410 ברמת ה-CDN בלי לגעת ב-origin. ב-Cloudflare Workers, אפשר לכתוב,
addEventListener('fetch', event => {
const url = new URL(event.request.url);
const goneUrls = ['/old-post-1/', '/old-post-2/'];
if (goneUrls.includes(url.pathname)) {
event.respondWith(new Response('Gone', { status: 410 }));
return;
}
event.respondWith(fetch(event.request));
});יתרון, מהיר (לא מגיע ל-origin), ניתן לעדכון מרכזי. חסרון, דורש מנוי Cloudflare עם Workers (לא free tier לחלוטין). לאתרים גדולים מאוד, שווה את ההשקעה.
טעות שכיחה
הטעות שאני רואה הכי הרבה היא שכחה של ה-^ וה-$ ב-regex. בלעדיהם, הכלל יכול להתאים לכל URL שמכיל את הסטרינג, לא רק התאמה מדויקת. לדוגמה, RedirectMatch 410 /old-post (בלי ^ ו-$) יחזיר 410 גם על /something/old-post-extra/ או /old-posts/. תמיד תוודאו שיש ^ בתחילה ו-$ בסוף (או /?$ אם רוצים תמיכה בslash סופי).
🎨 UX של עמוד 404, איך להפוך כישלון להזדמנות
עכשיו לצד שאף אחד לא מדבר עליו. עמוד 404 מותאם הוא הזדמנות שיווקית, לא בור שחור. אם גולש הגיע ל-URL לא קיים, יש לכם 5 שניות לעצור אותו מלצאת מהאתר. עמוד 404 גנרי של 'page not found' מטעם השרת הוא כישלון UX מלא. עמוד 404 חכם עם ניווט יעיל ועם זהות מותגית יכול להציל את הביקור ולהפוך משבר להזדמנות.
היסודות של עמוד 404 טוב
הודעה ברורה אבל לא מתנצלת
'העמוד לא נמצא' זה בסדר. 'אופס, אנחנו ממש ממש מצטערים' זה overkill. היו ישירים ואנושיים בלי דרמה.
הסבר קצר על מה לעשות
'אולי הקלדתם לא נכון, או שהעמוד הוסר. הנה כמה אפשרויות'. לא משאיר את הגולש תלוי באוויר.
שורת חיפוש
אם יש לכם אתר עם הרבה תוכן, שורת חיפוש בעמוד 404 היא קריטית. הגולש יקליד מה חיפש ויגיע למה שכן קיים.
קישורים לעמודים החשובים ביותר
3-5 קישורים מרכזיים, עמוד הבית, שירותים, בלוג, יצירת קשר. לא יותר, אחרת זה הופך לניווט מבלבל.
עיצוב ממותג
ה-404 הוא דף של האתר שלכם שמטפל בתרחיש לא רגיל. העיצוב זהה לשאר האתר, header, footer, לוגו, שאריות הגולש לא ירגיש שיצא לאיזשהו 'אזור שגיאות'.
מה לא לעשות בעמוד 404
- אל תפנו אוטומטית לעמוד הבית (soft 404 בעיני גוגל)
- אל תציגו רק 'העמוד לא נמצא' בלי אפשרות נוספת
- אל תציגו אנימציה ארוכה שמעכבת גישה
- אל תציגו פרסומות (זה אומר 'הצלחתם להגיע, עכשיו תקנו משהו')
- אל תוסיפו חידות שמרחיקות את הגולש מהמטרה
- אל תשכחו את ה-status code, חייב להחזיר 404 ולא 200
באתרים גדולים, שווה להוסיף לעמוד 404 הצעות 'אתם אולי חיפשתם...' על סמך ה-URL שהגיע. אם הגולש הקליד /produkts/iphone-15/ (טעות הקלדה), הציעו /products/iphone-15/ אוטומטית עם fuzzy match. שמירת הביקור, הצלת המכירה.
איך 404 משפיע על SEO
גוגל לא 'מעניש' אתר על קיומם של 404. לכל אתר יש כמה 404, וזה לחלוטין נורמלי. מה ש-כן פוגע, (1) עמודים חשובים שהפכו ל-404 בטעות. (2) soft 404. (3) עמודי 404 שמוגשים עם 200. (4) עמוד 404 שמפיל המרות בגלל UX רע.
איפה 404 הופך לבעיה
שיעור 404 טבעי באתר טוב הוא 0.5-2% מסך הבקשות. אם אתם רואים 5%+ בלוגים, יש משהו שבור (קישורים פנימיים שגויים, סייטמאפ ישן, מבנה URL שהשתנה). מעל 10%, בעיה רצינית של בריאות אתר שדורשת אודיט מיידי.
📋 Workflow אודיט + צ'ק ליסט חודשי של 4xx
אם אחרי כל המאמר אתם רוצים רק דבר אחד, שזאת תהיה הרשימה הזאת. אני עובד לפיה ב-90% מהאתרים שאני מנהל. הריצו אותה פעם בחודש, ותתפסו את הבעיות לפני שהן הופכות לקטסטרופה.
ה-workflow המלא, פעם בחודש
- 1. פתחו את Pages report ב-Search Console, וגללו עד 'Why pages aren't indexed'. ראו את המספרים של 404 ו-soft 404
- 2. השוו את המספרים לחודש שעבר, אם 404 קפץ ב-20%+, יש משהו חדש שנשבר
- 3. ייצאו את הרשימה ל-CSV, חפשו דפוסים, רוב הזמן 80% מגיעים מאותו דפוס
- 4. הריצו Screaming Frog crawl, סננו לפי Status Code 4xx לקישורים פנימיים שבורים
- 5. תקנו קישורים פנימיים שבורים ב-CMS, בלי זה גוגל ימשיך לסרוק
- 6. החליטו לכל URL, 404/410/301, רוב הזמן חלוקה של 60% 301 + 30% 410 + 10% השארת 404
- 7. הוסיפו את 410-ים ל-.htaccess, או לפלאגין Redirection ב-WordPress
- 8. הוסיפו את 301-ים לכל URL שיש לו חלופה טבעית
- 9. בדקו עם curl שהשינויים נכנסו,
curl -I https://yoursite.co.il/old-url/ - 10. עברו על רשימת ה-soft 404, החליטו 200+תוכן עשיר, 410, או 301
- 11. ודאו שה-template של 404 בtheme מכריז status 404 (לא 200) בקריאת curl על URL רנדומלי
- 12. בדקו עמודי חיפוש פנימי, /search?q= באינדקס = חסמו ב-robots.txt
- 13. בדקו עמודי טאגים/קטגוריות ריקים, או noindex או 410
- 14. עדכנו את הסייטמאפ, הסירו URLs שמחזירים 4xx
- 15. תכננו follow-up, רשמו החלטות לחודש הבא לבדוק שעבד
אני מנהל אתרים שבעבר היו רוויי 4xx מבולגנים, אחרי שמכניסים את ה-checklist הזה לרוטינה חודשית, הבעיות נתפסות בעודן קטנות. השקיעו 30 דקות בחודש בזה, ותחסכו שעות של דיבוג ולקוחות שמתעצבנים.
איך לבדוק status codes
curl ב-terminal
curl -I https://yoursite.co.il/url/מחזיר את ה-headers, כולל status code.Search Console URL Inspection
מציג מה ש-גוגל ראה כשסרק לאחרונה, כולל סטטוס.
Screaming Frog SEO Spider
סורק את כל האתר, סנן לפי 4xx לרשימת בעיות מהירה.
Chrome DevTools, Network tab
לבדיקה ידנית של עמוד יחיד, ראו status בעמודה Status.
4xx זה לא 'דברים שבורים שאסור שיהיו'. 4xx הם 'אותות שאתם מספרים לגוגל מה לעשות'. אם תשלטו באותות, גוגל יבין את האתר שלכם נכון.שמוליק דורינבאום
📖 מילון מושגים
- 404 Not Found
- HTTP status code שאומר 'העמוד לא נמצא, אולי טעות זמנית'. גוגל מסיר מהאינדקס לאט (4-12 שבועות), משאיר את האפשרות שהעמוד יחזור.
- 410 Gone
- HTTP status code שאומר 'נמחק לתמיד, אל תחזרו לבדוק'. גוגל מסלק מהאינדקס מהר (24-72 שעות), חד וברור.
- Soft 404
- תווית שגוגל נותן לעמוד שמחזיר 200 OK אבל התוכן מציין 'לא נמצא' או דף ריק. הסטטוס הכי בעייתי כי מתחבא.
- Crawl Budget
- התקציב שגוגל מקצה לסריקת האתר. בזבוז על עמודי 4xx מבולגנים מקטין את הסריקה של עמודים חדשים.
- Coverage Report
- דוח ב-Search Console (היום נקרא Pages report) שמציג מצב האינדקס של כל URL, כולל סוגי 4xx ומספרם.
- URL Inspection
- כלי ב-Search Console שמראה מה גוגל ראה כשסרק URL מסוים לאחרונה, כולל status code שקיבל.
- Custom 404 Page
- עמוד שגיאה מותאם אישית עם עיצוב של האתר. חייב להיות מוגש עם HTTP status 404, לא 200, אחרת = soft 404.
- RedirectMatch 410
- דירקטיבת Apache ב-.htaccess שמחזירה status 410 על URL או דפוס URLs. הדרך הסטנדרטית להחזיר 410 ב-WordPress/Apache.
- Discontinued Product
- מוצר שהופסק לתמיד מהקטלוג, להבדיל מ-out of stock שיוחזר. דורש 410 או 301, לא 404.
- Out of Stock
- מוצר שאזל זמנית ויוחזר. נכון להשאיר 200 עם תוכן עשיר, לא להחזיר 404 שיגרום לאיבוד האינדקס.
❓ שאלות נפוצות
מה ההבדל הבסיסי בין 404 ל-410?
מה זה soft 404 ולמה זה הכי גרוע?
מתי כדאי להחזיר 410 ולא 404?
איך מזהים soft 404 ב-Search Console?
האם 404 פוגע ב-SEO?
איך מוודאים שעמוד 404 מותאם בWordPress מחזיר באמת 404?
curl -I https://yoursite.co.il/some-random-url-that-doesnt-exist-12345/. אם התשובה הראשונה היא 'HTTP/2 404', אתם בסדר. אם זה 'HTTP/2 200', יש לכם בעיה, הtheme לא מכריז על status 404 נכון. תיקון, וודאו שב-404.php של הtheme יש קריאה ל-status_header(404) בתחילת הקובץ.מה ההבדל בין 410 ל-301 לפתרון עמוד מחוק?
האם Shopify תומך ב-410?
מוצר אזל זמנית, מה לעשות עם העמוד?
מה הדרך לבדוק status code בלי כלי מורכב?
curl -I https://yoursite.co.il/url/ ב-terminal. השורה הראשונה תציג את ה-status code (HTTP/2 200, או 404, או 410, וכו'). באלטרנטיבה, פתחו את הדף ב-Chrome, פתחו DevTools (F12), עברו ל-Network tab, רעננו את הדף, וראו את ה-Status בעמודה. ב-Search Console, URL Inspection מציג מה גוגל ראה כשסרק לאחרונה.