קובץ .htaccess חסר באפאצ'י: השלכות וכתיבה מחדש

ב-Apache ללא .htaccess, permalinks יחזירו 404 והגדרות אבטחה נעלמות. כך מחזירים את הקובץ עם הכללים הנכונים.

בשרתי 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 וקובע אם הקובץ קיים ובעל גודל סביר.

איך לתקן

  1. גש להגדרות > קישורים קבועים בלוח הבקרה של וורדפרס.
  2. לחץ Save Changes בלי לשנות כלום. וורדפרס יכתוב מחדש את .htaccess אם יש לתיקיית השורש הרשאות כתיבה.
  3. אם לא נוצר קובץ: בדוק הרשאות (chmod 755 על השורש; הקובץ עצמו 644). וודא שאין .htaccess ב-wp-admin שחוסם.
  4. אם הוורדפרס לא מצליח לכתוב, צור ידנית דרך 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
  5. אם השרת LiteSpeed או OpenLiteSpeed - הוסף את אותו בלוק; הם מכבדים את התחביר.
  6. אם השרת 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 על כל האתר. אם זה קרה - מחק את הקובץ זמנית ויצור מחדש דרך הגדרות > קישורים קבועים.