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, אבל סביר להניח שרוב התקלות שתראו יפלו בקטגוריות האלו. בהצלחה!

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

רספברי פיי

מה זה AIoT? ואיך אפשר להתחיל?

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

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

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

תמונת תצוגה של מנעול על מחשב
פתרונות ומאמרים על פיתוח אינטרנט

הגנה מפני XSS עם Trusted Types

תכונה ב-CSP שמאפשרת מניעה כמעט הרמטית להתקפות XSS שכל מפתח ווב צריך להכיר וכדאי שיכיר.

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