אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » htaccess

htaccess

רן בר-זיק מרץ 15, 2011 7:59 am 2 תגובות

crash course ל-htaccess – מעכשיו אין תרוצים! לומדים איך להשתמש ב-htaccess תוך כמה דקות.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

htaccess למי שלא יודע, הוא קובץ קטן שנמצא בשרתי Apache. htaccess מסייע לנו בהפניית המשתמש בתוך האתר. ישנם המון שימושים ל-htaccess: מבחינת SEO, הוא ישמש אותנו להאחדת כתובות ומניעת שכפול כתובת. הפניית 301 וכמובן clean URL. מבחינת System, אנו יכולים להשתמש ב-htaccess על מנת למנוע גישה לקבצים/תיקיות מסוימות, או לבצע בדיקות על המשתמש לפני שנותנים לו לגשת למשאב מסוים.

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

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

מבנה ה-htaccess

על מנת ש-htaccess יפעל, אנו ניצור קובץ בשם htaccess. ונמקם אותו בתיקיה שלנו שנמצאת על שרת מבוסס לינוקס. נכתוב שם מעט ג'יבריש וננסה להכנס לתיקיה עם הדפדפן. אנו מקבלים תקלה 500? אם כן, מעולה! במידה ולא – תבדקו למה ה-htaccess שלכם לא עובד.

htaccess, לפחות במה שקשור להפניות, קשור ל-mod_rewrite, ולפיכך כל ההפניות יופיעו בתוך תנאי שבודק את mod_rewrite:


<ifmodule mod_rewrite.c>
  RewriteEngine on


</ifmodule>

הפניה מורכבת בדרך כלל משני חלקים. תנאי אחד (או יותר) שאם הוא מתמלא אז ההפניה מתבצעת. החלק השני הוא ההפנייה. אנו לא חייבים לכתוב תנאים ויכולים לבצע את ההפניות.

הפניה פשוטה

הפניות מחולקות למספר חלקים. החלק הראשון מורכב מהצהרה של ההפניה – כותבים RewriteRule.
החלק השני הוא מאיפה לעשות את ההפניה. כאן משתמשים בביטוי רגולרי.
החלק השלישי הוא לאן לעשות את ההפניה, ניתן לכתוב כאן url.
החלק הרביעי [בסוגריים מרובעות] הם פרמטרים שונים בנוגע להפניה.

אדגים את זה עם דוגמא פשוטה. נניח שיש לי אתר בשם mysite.com. באתר החביב הזה אני רוצה לבצע הפניה מתיקית sp לתיקית es. איך אעשה זאת? כך:


RewriteRule ^sp$ http://www.mysite.com/es [R=301,L]

בואו וננתח את מה שהולך פה. ראשית יש לי את RewriteRule וזה מנדטורי. אחרי כן יש לי ביטוי רגולרי שמציין את תיקית sp שימו לב לסימני ההתחלה והסוף של הביטוי הרגולרי! זה אומר שהביטוי תופס ל-mysite.com/sp אבל לא ל: /mysite.com/sp או ל: mysite.com/whatever/sp/
החלק השלישי הוא ההפניה בפועל, כאן יכול להופיע url מלא (עדיף) או יחסי.
החלק הרביעי הוא פרמטרים. R=301 הוא קוד ה-http שניתן למי שמנסה להכנס. במקרה שלנו 301 זו הפניה קבועה. L מציינת שמדובר ב-RewriteRule סופי שאחריו יש לבצע את ההפניה ולא לעבד חוקים נוספים.

לא לשכוח שגם אם שמנו L, ברגע שבוצע RewriteRule מוצלח, ברגע הטעינה של הדף החדש יתחיל מחדש עיבוד של ה-htaccess.

הפניה עם שימוש בפרמטרים

הכל טוב ויפה, באמצעות השימוש בכלל שלעיל, כל מי שינסה להכנס ל-mysite.com/sp יופנה אחר כבוד ל-mysite.com/es אבל מה יקרה למי שינסה להכנס ל-mysite.com/sp/whatever ? הוא לא יופנה כמובן, כיוון שלפי הכלל שלנו אנחנו מקבלים רק את מי שמנסה להכנס ל-mysite.com/sp. נכון שאני יכול להוסיף בביטוי הרגולרי משהו כזה:


 RewriteRule ^sp/.*$ http://www.mysite.com/es [R=301,L]

אבל למרבה הצער אם אני מנסה להכנס ל http://www.mysite.com/sp/whatever הוא יפנה אותי ל-mysite.com/es ולא לmysite.com/es/whatever. אני צריך פרמטר שבו אוכל להשתמש בחלק שבו אני מציין לאן אנו רוצים שהמשתמש יופנה. זה קל אם אנו משתמשים בתת תבנית. כל תת תבנית שאנו משתמשים בה הופכת אוטומטית למשתנה שאנו יכולים להשתמש בו בחלק ההפניה. למשל בדוגמא שלנו:


 RewriteRule ^sp/(.*)$ http://www.mysite.com/es/$1 [R=301,L]

$1 הוא המשתנה שלנו, אנו משתמשים בתת תבנית שכוללת את כל מה שבא אחרי ה-/sp מה שיש בתוך תת התבנית הזו נכנס אוטומטית למשתנה $1. אפשר להשתמש בכמה משתנים בהתאם למספר התת תבניות שאנו השתמשנו בהם:


 RewriteRule ^sp/(.*)/(.*)$ http://www.mysite.com/es/$2/$1 [R=301,L]

זה למשל יגרום לכל מי שנכנס ל: mysite.com/sp/moshe/shalom לעבור אל: mysite.com/es/shalom/moshe.

תנאים

תנאים מסייעים לנו אם בכלל לקיים את ההפנייה. כך למשל, אני יכול להחליט שעבור URL מסויים אין צורך לבצע הפניה. דוגמא מעולה לצורך בתנאי הוא ב-RewriteRule שמוסיף סלאש בסוף הכתובת – כך ש: http://www.mysite.com יופנה ל-/http://www.mysite.com. אנו לא רוצים שמי שנכנס ל: /http://www.mysite.com יקבל עוד איזה סלאש בסוף. לפיכך יש לנו תנאי.

תנאי מורכב משלושה חלקים:
1. RewriteCond – משפט מנדטורי שמסמן לנו שמדובר בתנאי.
2. המשתנה שעליו אנו מבצעים את התנאי. יכול (להיות כתובת: %{REQUEST_URI} (הוא בדרך כלל כתובת). אך יכול להיות גם כתובת מלאה: %{HTTP_HOST} או משתנים נוספים.
3. ביטוי רגולרי שאם הוא מתקיים התנאי מתקיים.
4. פרמטר.

הנה למשל תנאי:


RewriteCond %{REQUEST_URI} !(.*)/$ [NC]

התנאי הזה בודק את ה-REQUEST_URI – כלומר החלק שמגיע מיד אחרי ה-www.mysite.com. האם אין לו סלאש בסופו? אם אין לו, אז התנאי יתקיים ונוכל לעבור ל-RewriteRule:


RewriteCond %{REQUEST_URI} !(.*)/$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1/ [L,R=301]

הפרמטר NC בעצם מבקש שלא להתחשב באותיות רשיות (Capital letters).

אפשר להשתמש בפרמטר אחד או בכמה פרמטרים שכולם צריכים להתקיים. כך למשל:


RewriteCond %{REQUEST_URI} !(.*)/$ [NC]
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^(.*)$ http://www.mysite.com/$1/ [L,R=301]

כאשר התנאי השני יתקיים כאשר אין index.php ב-URL אשר אותו אנו מבקשים.

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

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
apache לינוקס תשתית

2 תגובות

  1. אסף הגב יולי 7, 2019 בשעה 9:27 pm

    יש בעיית כיווניות בשורה הראשונה: בשרתי APACHE. htaccess מסייע
    חסר לי הסבר איך ניגשים אל הקובץ, באיזו תיקייה הוא

    • אבי ברוך הגב דצמבר 1, 2020 בשעה 9:18 am

      קובץ .htaccess נמצא בד"כ בשורש, כלומר בתקייה הראשית של הפרוייקט. אבל הוא יכול להימצא בכל תקייה אחרת.

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

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