דילוג לתוכן
שרת ו-.htaccess

קובץ ה‏-.htaccess הברירת מחדל של וורדפרס: מה הוא מכיל ואיך משחזרים אותו

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

פורסם

קובץ ה‏-.htaccess הברירת מחדל של וורדפרס הוא הבלוק הקצר של RewriteEngine שהתוכנה כותבת בקובץ ה‏-.htaccess בשורש האתר שלכם, כך שקישורים קבועים כמו /2026/10/שם-הפוסט/‎ יסתדרו במקום להחזיר 404. הוא נראה כך:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

זה הבלוק המדויק, שמופיע במדריך הרשמי של וורדפרס על Apache HTTP Server ובלוגיקת ה-rewrite המתועדת בדף HelpHub על קישורים קבועים יפים. אם ה-RewriteBase שלכם אינו /‎ — למשל כי וורדפרס מותקנת בתיקיית משנה — הוא יתאים לנתיב הזה במקום, וזה גם תקין ומיוצר על ידי וורדפרס עצמה.

הנקודות החשובות

  • וורדפרס מייצרת את הבלוק הזה אוטומטית, רק על Apache ו-LiteSpeed, בכל פעם שהקובץ ניתן לכתיבה ואתם שומרים הגדרות > קישורים קבועים.
  • אם הקובץ חסר או פגום, כל הקישורים הקבועים חוץ מעמוד הבית מחזירים 404, מכיוון שרק עמוד הבית ניתן למצוא בלי כללי ה-rewrite.
  • כל מה שאתם או תוסף מוסיפים צריך להיות מעל # BEGIN WordPress, ולעולם לא בתוך הסימנים — וורדפרס כותבת מחדש את כל מה שבאמצע בכל שמירת קישורים קבועים.

צריך לבנות מחדש את הקובץ עם הנתיב האמיתי שלכם וכמה כללים נוספים? מחולל ה-.htaccess לוורדפרס מרכיב קובץ תקין ישירות בדפדפן שלכם.

מה כל שורה עושה

RewriteEngine On מפעיל את מודול mod_rewrite של Apache עבור הספרייה הזו; בלי השורה הזו, כל מה שבא אחריה לא פעיל.

RewriteBase /‎ אומר ל-Apache שהנתיבים שנכתבו מחדש הם יחסיים לשורש האתר. וורדפרס מגדירה את זה בהתאם למקום שבו האתר באמת נמצא — התקנה בתיקיית משנה מקבלת RewriteBase /blog/‎, לא /‎.

RewriteRule ^index\.php$ - [L] הוא שומר בלי אפקט: אם הבקשה היא כבר index.php, ה-rewrite נפסק והבקשה עוברת בלי שינוי.

שתי שורות ה-RewriteCond הן הלוגיקה האמיתית. %{REQUEST_FILENAME} !-f ו-!-d שואלות “הבקשה הזו לא תואמת לקובץ אמיתי, ולא תואמת לתיקייה אמיתית?”. שתיהן צריכות להיות נכונות כדי שהכלל האחרון יופעל — כך תמונה אמיתית, קובץ CSS, או PDF שהועלה מוגשים ישירות ולעולם לא נוגעים בניתוב של וורדפרס.

RewriteRule . /index.php [L] הוא מה שמגרום לקישורים קבועים לעבוד: כל מה ששרד משני התנאים הקודמים — כלומר אינו קובץ או תיקייה אמיתיים — נשלח ל-index.php, והניתוב של וורדפרס עצמה (WP_Query, תגי rewrite) מחליט איזה פוסט, עמוד או ארכיון ה-URL הזה באמת מייצג.

מתי וורדפרס יוצרת מחדש את הקובץ הזה, ומתי היא לא מצליחה

וורדפרס מנסה לכתוב את ה-.htaccess בעצמה בכל פעם שאתם פותחים הגדרות > קישורים קבועים ולוחצים שמור שינויים, גם אם שום דבר לא השתנה במסך. השמירה הזו מפעילה את flush_rewrite_rules(), שמנסה לפתוח את ה-.htaccess לכתיבה ולהכניס את הבלוק הנוכחי בין הסימנים.

הניסיון הזה נכשל בשתיקה, ומשאיר את הקובץ חסר או מיושן, כאשר:

  • הקובץ או תיקיית האב שלו לא ניתנים לכתיבה עבור המשתמש שבו PHP רץ. באירוח משותף רבים, PHP רץ כמשתמש מערכת שונה מזה שהעלה קבצים ב-FTP, כך שהרשאות שנראות תקינות בלקוח FTP עדיין יכולות לחסום את הכתיבה של וורדפרס.
  • אתם נמצאים על nginx. .htaccess הוא מנגנון בלעדי של Apache ו-LiteSpeed (התיעוד של Apache על AllowOverride עצמו מסביר מדוע: ל-nginx אין קובץ תצורה לפי ספרייה שהוא קורא מחדש בכל בקשה). המקביל ב-nginx הוא הנחיית try_files בתוך בלוק server, שרק מי שיש לו גישה לשרת יכול לערוך; וורדפרס לעולם לא יכולה לכתוב אותה בשבילכם.
  • AllowOverride מוגדר ל-None עבור הספרייה של האתר שלכם בתצורה המרכזית של Apache. זו ההגדרה שמאפשרת בכלל ל-.htaccess לשנות משהו; התיעוד של Apache ברור: עם AllowOverride None, “קבצי .htaccess מתעלמים מהם לחלוטין” — וורדפרס יכולה לכתוב קובץ מושלם, והוא יישאר בלי אפקט עד שההגדרה הזו תשתנה בשרת עצמו.
  • הקובץ נמחק או שלא היה קיים מעולם, ומשהו בשמירה לא הפעיל יצירה מחדש — הסיבה הנפוצה ביותר היא שמבנה הקישורים הקבועים היה כבר אותו דבר, כך שוורדפרס לא ראתה שינוי לכתוב מחדש.

איך משחזרים אותו ידנית

אם פוסטים ועמודים מחזירים 404 בזמן שעמוד הבית עדיין עובד, זה הסימן הטיפוסי של .htaccess חסר או שבור. תקנו את זה בשני שלבים.

1. נסו קודם את הפתרון בלחיצה אחת. עברו להגדרות > קישורים קבועים בלוח הבקרה של וורדפרס ולחצו שמור שינויים בלי לשנות שום דבר. אם הקובץ ניתן לכתיבה, זה בלבד יוצר אותו מחדש וזהו.

2. אם זה לא עוזר, צרו את הקובץ ידנית. התחברו דרך FTP/SFTP או מנהל הקבצים של המארח שלכם, עברו לתיקייה שבה וורדפרס מותקנת (זו שמכילה את wp-config.php), ובדקו אם .htaccess קיים בכלל — זה קובץ מוסתר, חלק ממנהלי הקבצים מסתירים אותו כברירת מחדל; הפעילו “הצג קבצים מוסתרים”.

  • אם הוא חסר, צרו קובץ חדש בשם מדויק .htaccess (לא .txt, שום דבר לפני הנקודה).
  • הדביקו את הבלוק הברירת מחדל שלמעלה, והתאימו את RewriteBase אם וורדפרס נמצאת בתיקיית משנה.
  • שמרו ורעננו את הקישור הקבוע של פוסט כדי לאשר שהוא עובד.

אם עדיין מקבלים 404 אחרי זה, הסיבה עברה מ”ה-.htaccess חסר” ל”ה-.htaccess מתעלמים ממנו” — שאלו את המארח שלכם על AllowOverride, מפני שקובץ תקין בספרייה שבה ל-Apache יש הוראה להתעלם ממנו מתנהג בדיוק כמו היעדר קובץ.

הכללים שלכם לעומת הבלוק של וורדפרס

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

# כללים שאתם או תוסף הוספתם — מעל הסימנים של וורדפרס
<FilesMatch "\.(jpg|jpeg|png|gif)$">
    # לדוגמה: הגנה מפני hotlinking, כללי מטמון וכו'.
</FilesMatch>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

כל מה שמוצב בין # BEGIN WordPress ל-# END WordPress נמחק בשתיקה בפעם הבאה שמישהו שומר את מסך הקישורים הקבועים, מפני שוורדפרס מתייחסת לכל הקטע הזה כשלה ומכתיבה אותו מחדש במלואו. זו הסיבה הנפוצה ביותר לתלונה “הכלל המותאם שלי נעלם” — הוא לעולם לא הוסר בכוונה, הוא פשוט נמצא בתוך בלוק שוורדפרס רואה כשלה. לגבי הפניות בפרט, ראו כללי הפניית .htaccess של וורדפרס שנעשו בצורה נכונה כדי לדעת איפה הם צריכים להיות ואיך להימנע מלופים.

זו גם הסיבה הנפוצה ביותר לשגיאת 500 Internal Server Error פתאומית ממש אחרי ערכית הקובץ: כלל שהועתק מפוסט פורום שנכתב לגרסת Apache אחרת (תחביר Order/Deny של 2.2 מעורבב עם תחביר Require של 2.4) שובר את הניתוח של כל הקובץ, כולל הבלוק של וורדפרס שמתחתיו, והאתר כולו קורס — לא רק החלק שנגעתם בו.

מעבר לבלוק הברירת מחדל

הבלוק הברירת מחדל מטפל רק בניתוב הקישורים הקבועים. אם אתם גם רוצים להדק את הגישה לקבצים רגישים או להוסיף את החופן הקטן של כללי .htaccess שבאמת מקטינים את שטח ההתקפה — חסימת הרצת PHP בתוך /uploads, שלילת בקשות ישירות ל-wp-config.php — ראו כללי אבטחת .htaccess של וורדפרס שבאמת עוזרים. ואם הקישורים הקבועים מחזירים 404 מסיבה אחרת — מבנה קישורים קבועים שגוי, שכבת מטמון שמגישה כללים ישנים, התנגשויות multisite בתת-ספריות — קישורים קבועים של וורדפרס שלא עובדים עוברת על הסיבות האחרות.

שאלות נפוצות

מה זה קובץ ה‏-.htaccess הברירת מחדל של וורדפרס? זה בלוק ה-RewriteEngine שוורדפרס כותבת בין # BEGIN WordPress ל-# END WordPress כדי שקישורים קבועים יסתדרו ל-index.php במקום להחזיר 404.

מה הקוד המדויק של .htaccess הברירת מחדל של וורדפרס? RewriteEngine On, RewriteBase /‎, כלל מעבר עבור index.php, שני תנאים שבודקים שהבקשה אינה קובץ או ספרייה אמיתיים, וכלל אחרון ששולח את כל השאר ל-index.php. הבלוק המלא מופיע בראש המדריך הזה.

למה כל הפוסטים שלי מחזירים 404 חוץ מעמוד הבית? אפשר למצוא את עמוד הבית בלי שום כלל rewrite; כל קישור קבוע אחר צריך אותם. .htaccess חסר או פגום על Apache מייצר בדיוק את התבנית הזו.

האם וורדפרס יוצרת מחדש את .htaccess באופן אוטומטי? רק אם הקובץ ניתן לכתיבה — שמירה חוזרת של הגדרות > קישורים קבועים מפעילה את זה. אם הקובץ אינו ניתן לכתיבה, חסר במארח שלא מייצר אותו אוטומטית, או ש-AllowOverride כבוי, וורדפרס לא יכולה לתקן את זה בשבילכם ועליכם ליצור או לתקן את הקובץ ידנית.

למה ל-nginx אין קובץ .htaccess של וורדפרס? .htaccess עובד רק על Apache ו-LiteSpeed. ל-nginx אין קובץ תצורה לפי ספרייה והוא מתעלם מ-.htaccess לחלוטין; אותו ניתוב נכתב ככלל try_files בבלוק server של nginx.

למה ה-.htaccess שלי התקלקל אחרי שמירת קישורים קבועים? כלל מותאם הוצב בתוך הסימנים # BEGIN WordPress / # END WordPress במקום מעליהם, וורדפרס כתבה מחדש את כל הקטע הזה בשמירת הקישורים הקבועים הבאה.


בנו .htaccess נקי ותקין — בלוק קישורים קבועים ברירת מחדל בתוספת כל כלל אבטחה או הפניה שאתם באמת צריכים — עם מחולל ה-.htaccess החינמי לוורדפרס.

FAQ

שאלות

מה זה קובץ ה‏-.htaccess הברירת מחדל של וורדפרס?

זה הבלוק הקצר של RewriteEngine שוורדפרס כותבת בקובץ ה‏-.htaccess בשורש האתר כדי שקישורים קבועים יעבדו. הוא ממוקם בין ההערות # BEGIN WordPress ו-# END WordPress, ומפנה כל בקשה שאינה קובץ או תיקייה אמיתיים אל index.php, שם וורדפרס מחליטה מה להציג.

מה הקוד המדויק של .htaccess הברירת מחדל של וורדפרס?

RewriteEngine On, RewriteBase /, כלל שמעביר ללא שינוי קבצים וספריות קיימים, וכלל RewriteRule אחרון ששולח את כל השאר ל-index.php בזמן שנשמר ה-query string. הבלוק המלא מופיע למטה ותואם בדיוק לבלוק שוורדפרס עצמה מייצרת בהגדרות > קישורים קבועים.

למה כל הפוסטים שלי מחזירים 404 חוץ מעמוד הבית?

זה הסימפטום הקלאסי של .htaccess חסר או פגום על Apache. עמוד הבית נטען כי השרת מוצא את index.php ישירות, אבל כל קישור קבוע אחר צריך את כללי ה-rewrite כדי להגיע לשם, ובלעדיהם Apache פשוט מחפש קובץ שלא קיים ומחזיר 404.

האם וורדפרס יוצרת מחדש את .htaccess באופן אוטומטי?

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

למה ל-nginx אין קובץ .htaccess של וורדפרס?

מפני ש-.htaccess היא תכונה של Apache (ו-LiteSpeed); ל-nginx אין מקביל והוא מתעלם מהקובץ לחלוטין. ב-nginx אותה לוגיקת ניתוב נכתבת כהנחיית try_files בתוך בלוק server, שרק המארח שלכם או מנהל מערכת יכולים לערוך.

למה ה-.htaccess שלי התקלקל אחרי שמירת קישורים קבועים?

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