htaccess. לא עובד

פתרונות לתקלות נפוצות בשימוש בקבצי htaccess שמשמשים אותנו בשרתי Apache.

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

תקלת Internal Server Error – 500

אם התקלה הזו מתרחשת, אשריכם, טעיתם בסינטקס של ה-htaccess. כל מה שעליכם לעשות זה לבדוק את הסינטקס, עברו שורה שורה ומחקו אותה באמצעות # (סימן ההערה) ותראו מה התחרבש.

rule מסוים ב-htaccess לא עובד/כולם לא עובדים

נסו לכתוב ג'יבריש ב-htaccess. במידה וקיבלתם תקלת תקלת Internal Server Error – 500 – ה-htaccess עובד וכנראה טעיתם באחד ה-rules שלכם. נסו לדבג את ה-htaccess עם סימן ההערה (#) או להשתמש בכלים לבניית htaccess.

במידה וכתבתם ג'יבריש ב-htaccess והוא לא מעיף אתכם בטענת Internal Server Error – 500, יש לכם בעיה עם ה-htaccess והוא לא פועל בשרת שלכם. המשיכו לסעיף הבא.

htaccess לא עובד

במידה ועשיתם את המבחן המוזכר לעיל וה-htaccess שלכם לא עובד, יש כמה אפשרויות לכשלון:
1. יש איזה htaccess אחר בתיקיה בהיררכיה נמוכה יותר (סבירות נמוכה אבל שווה לבדוק – הקפידו להעלות בדפדפן את התיקיה שבה נמצא ה-htaccess שלכם).
2. אתם משתמשים בשרת מבוסס על חלונות. htaccess לא יעבוד בלי קינפוג מיוחד. פנו לאיש ה-IT הקרוב אליכם.
3. אתם משתמשים בשרת שיתופי (Shared Hosting) ואיש ה-IT שלכם ביטל בטעות או שלא בטעות את האפשרות ל-htaccess. דברו איתו בנועם אך בתקיפות ובקשו פתרון לבעיה.
4. אתם משתמשים בשרת מבוסס לינוקס ולא הפעלתם את mod_rewrite. במקרה הזה, יש לכתוב את השורות הבאות:


sudo a2enmod rewrite

יש לבצע ריסטרט ל-Apache אחרי ההפעלה של המודול.


sudo /etc/init.d/apache2 restart

לעולם אל תשכחו את ה-sudo! במידה ויש תקלות/אזהרות במהלך האיתחול, האחריות שלכם היא לפתור אותן.

במידה ואחרי הריסטורט עדיין ה-htaccess לא עובד, יש להכנס ל- /etc/apache2/apache2.conf ולוודא שליד ה-AllowOverride יהיה כתוב All ולא none. אחרי כל שינוי יש לשמור ולבצע ריסטרט לשרת ה-Apahce.

במידה וב-apahce2.conf אין לכם AllowOverride, נסו לבדוק ב:

/etc/apache2/sites-available/default

לא לשכוח לבצע ריסטרט לשרת האפאצ'י בכל פעם שעושים שינוי!

ה-htaccess עובד אבל מבצע Redirection שלא ביקשתם ממנו

זו תקלה מעניינת שמתרחשת כיוון שיש הפניה ב-DNS ולאו דווקא ב-htaccess. אם אתם רואים שה-htaccess עובד אבל עדיין יש איזו הפניה שאתם לא ביקשתם שעובדת – בידקו ליתר בטחון ב-DNS שאין איזו הפניה לדומיין אחר או תת-דומיין/תיקיה. איך בודקים? עושים ping. אם ping לשתי כתובות תחת אותו דומיין הוא בעצם ל-IP שונה – יש לכם הפניה ברמת ה-DNS.

תקלה אקזוטית במיוחד – ל-htaccess לא קוראים ככה

יש כמה אנשי IT חביבים שמחליטים מהטעמים השמורים עימם, לשנות את שמו של קובץ ה-htaccess. בידקו ב-Virtual Host שיש בלינוקס (נמצא תחת /etc/apache2/available-sites) אם יש שינוי של השם הדיפולטי של ה-htaccess בהגדרה AccessFileName.

זה כמובן רק מעט מזעיר התקלות שיכולות להיות ב-htaccess, אבל סביר להניח שרוב התקלות שתראו יפלו בקטגוריות האלו. בהצלחה!

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

עבודה עם GPT למתכנתים

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

פיתוח ב-JavaScript

Axios interceptors

תכנון נכון של קריאות AJAX באפליקציה ריאקטית וניהול השגיאות או ההצלחות עם פיצ׳ר נחמד של axios

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

גלילה לראש העמוד