בשרתי Apache, הקובץ .htaccess בשורש של תיקיית האתר אחראי על שני דברים קריטיים: כתיבה מחדש של URLs (permalinks יפים) ומגוון הגדרות מקומיות (headers, חסימות, הפניות). כשהוא חסר או ריק, האתר יכול להיראות שלם בעמוד הבית - אבל כל URL פנימי מחזיר 404.
למה זה משנה
וורדפרס מאפשר ליצור URL-ים יפים כמו /about-us/ במקום /?page_id=42. כדי שזה יעבוד באפאצ'י, יש כללי mod_rewrite שממירים בקשה ל-URL הפנימי. הכללים האלה נמצאים ב-.htaccess. בלי הקובץ - או עם תוכן ריק/מושחת - כל permalink מחזיר 404: דפי פוסטים, דפי קטגוריה, דפי מחבר, עמודי חיפוש. רק עמוד הבית עובד כי הוא נטען ישירות מ-index.php.
בנוסף, .htaccess הוא המקום שבו רוב התוספים והגדרות האבטחה מוסיפים כללים: חסימת xmlrpc.php, חסימת directory listing, headers של אבטחה (X-Frame-Options, Content-Security-Policy), הפניית HTTP ל-HTTPS, חסימת hotlinking של תמונות. בלי הקובץ - כל ההוספות האלה נעלמות. הסיבות הנפוצות לחסר: מחיקה בטעות, פריסה (deploy) שלא העתיקה קבצים מוסתרים, או שינוי מ-Apache ל-Nginx/LiteSpeed שבו .htaccess לא רלוונטי.
איך לזהות
בדוק תחילה אם השרת בכלל Apache. בשרת Nginx או LiteSpeed הקובץ אינו נדרש (LiteSpeed מכבד אותו, Nginx מתעלם לחלוטין). דרך SSH:
apache2 -v || httpd -v
ls -la /path/to/wordpress/.htaccessאם זה Apache והקובץ לא קיים - יש בעיה. דרך לוח הבקרה: גש ל-File Manager והפעל "Show Hidden Files". אם זוהה רק קובץ ריק (0 bytes) - גם זו תקלה. RankPlus קורא דרך realpath וקובע אם הקובץ קיים ובעל גודל סביר.
איך לתקן
- גש להגדרות > קישורים קבועים בלוח הבקרה של וורדפרס.
- לחץ Save Changes בלי לשנות כלום. וורדפרס יכתוב מחדש את
.htaccessאם יש לתיקיית השורש הרשאות כתיבה. - אם לא נוצר קובץ: בדוק הרשאות (
chmod 755על השורש; הקובץ עצמו644). וודא שאין.htaccessב-wp-adminשחוסם. - אם הוורדפרס לא מצליח לכתוב, צור ידנית דרך SFTP. הוסף את הבלוק הבסיסי:
# 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 - אם השרת LiteSpeed או OpenLiteSpeed - הוסף את אותו בלוק; הם מכבדים את התחביר.
- אם השרת Nginx - אל תיצור
.htaccess. במקום זה, וודא שב-nginx.confאו ב-sites-availableישtry_files $uri $uri/ /index.php?$args;.
טעויות נפוצות
- הוספה ידנית של בלוק WordPress פעמיים: יוצר חוקים סותרים. השאר רק בלוק אחד בין
# BEGIN WordPressל-# END WordPress. - שינוי תוכן בין הסימונים: וורדפרס תכתוב מחדש את הקטע הזה. שינויים מותאמים אישית צריכים להיות מחוץ לסימונים, מעליהם או מתחתם.
- הרשאות 777: זהו וקטור פריצה - תוקף יכול לערוך את הקובץ. השתמש ב-644 לקובץ עצמו ו-755 לתיקייה.
- סגירת AllowOverride בקונפיג של Apache: גם אם הקובץ קיים, אם
AllowOverride Noneבקונפיג השרת - הוא לא נטען. וודאAllowOverride Allב-vhost.
בדיקה לאחר תיקון
גש לפוסט קיים עם permalink יפה (למשל /sample-post/) - אמור לטעון תקין, לא 404. בדוק את הקובץ ב-FTP - אמור להכיל את הבלוק # BEGIN WordPress. הרץ שוב את הסריקה של RankPlus - הסטטוס יחזור לירוק. אם הוספת תוספים שמשנים .htaccess (Wordfence, Yoast), הפעל אותם שוב כדי שיכתבו את הכללים שלהם.
.htaccess לפני שינויים. שגיאת syntax בקובץ הזה גורמת ל-500 על כל האתר. אם זה קרה - מחק את הקובץ זמנית ויצור מחדש דרך הגדרות > קישורים קבועים.