Quantcast
Channel: ‫Htm - אחלה טיפים לבניית אתרים »שינוי כתובות‬
Viewing all articles
Browse latest Browse all 2

‫יישום שינוי כתובות עם mod_rewrite –פרק ב'‬

$
0
0

בהמשך לפרק א', בפרק זה, נלמד ליישם את שינוי הכתובות עם mod_rewrite, בכדי ליצור קישורים יותר ידידותיים לגולש ולמנועי החיפוש. היישום הוא נורא פשוט והוא נעשה דרך קובץ htaccess שאותו אנחנו יוצרים בתיקייה הראשית בשרת (public_html) ושם אנחנו כותבים את החוקים לשינוי הכתובות.

מטרת העל של המדריך הזה הוא לגרום לגולשים שנכנסים לכתובת הזו:

http://www.mywebsite.co.il/pages/אודות

לקבל מהשרת את הדף הזה:

http://www.mywebsite.co.il/page.php?title=אודות

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

מה זה htaccess?

קבצי htaccess הם קבצי הגדרה (קונפיגורציה) מקומיים כלומר – בתוך קובץ htaccess אנחנו מכניסים הגדרות שיפעלו רק על התיקייה בה נמצא קובץ הhtaccess, ברגע שיש קובץ htaccess בתיקייה מסויימת, שרת הApache בברירת מחדל יודע לגשת אליו, לקרוא אותו וליישם את מה שנכתב בתוכו.

יישום בתוך קובץ הhtaccess

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

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

1
2
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^pages/(.*)$ ./page.php?title=$1

השורה הראשונה מאפשרת כתובות סמליות (כמו מה שאנחנו עושים), בעיקרון בלינוקס זוהי לא שורת חובה אבל במערכות הפעלה אחרות זה הכרחי. השורה השניה מפעילה את הmod_rewrite בApache.

שתי שורות הבאות הן נורא חשובות, בהם אנחנו קובעים את הסדר העדיפויות של השרת – כלומר, אנחנו אומרים לשרת שאם הקבצים שאליהם הגולש מנסה להגיע אליהם דרך הכתובת באמת קיימים שלא יפעיל את הmod_rewrite. השורה השניה מסמלת שאם התיקייה (הדגל "!-d" עבור directories) קיימת אז שיתעלם מהmod_rewrite והשורה השלישית (הדגל "!-f" עבור files) מסמלת אותו דבר כלפי קבצים.

השורות 1-5 הן הקדמה גלובאלית לכל שינוי כתובות שתרצו לעשות.

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

ניתן לחלק את החוק לשני חלקים:

  1. החלק הראשון הוא תנאי של מבנה עם ביטוי רגולרי
    RewriteRule ^pages/(.*)$ ./page.php?title=$1

    "^" מסמן את תחילת תנאי המבנה, הדולר מסמן סיום התנאי, באמצע תוכלו לראות נקודה וכוכבית, נקודה מסמלת תו בודד (כל תו), והכוכבית מסמלת אין סוף חזרות של תווים "בודדים" (יכול להיות גם 0), הסוגרים תוחמים בתוכם את המשתנה $1, במידה ויש עוד סוגריים בהמשך הוא יתחום את המשתנה עם המספר העוקב ($2 וכן הלאה..).
    אם הURL הנכנס מתאים למבנה הרגולרי* שנכתב בחוק, הדף שיוצג לגולש ילקח מהנתיב שבחלק השני של החוק.

  2. החלק השני הוא פשוט הנתיב ממנו ילקח הדף שיוצג ללקוח:
    RewriteRule ^pages/(.*)$ page.php?title=$1

    ניתן לראות בחלק זה את נתיב הקובץ שממנו השרת שולף את הדף שיוצג למשתמש עם משתנה GET שאת הערך שלו הוא מציב מאותם סוגרים בחלק הראשון של החוק.

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

בדיקה והפעלת mod_rewrite

יש לציין שהmod_rewrite מגיע עם הApache ומופעל איתו כברירת מחדל, במידה והשינוי כתובות לא עובד לכם סביר להניח שאתם פשוט צריכים להפעיל את הmod_rewrite, יש מספר דרכים לבדוק אם mod_rewrite מופעל בשרת שלכם, אחד מהם הוא בעזרת הפונקציה phpinfo, בעזרתה תוכלו לבדוק אם mod_rewrite נמצאת תחת קטגוריית "Loaded Modules" או בעזרת השלבים הבאים:

  1. צרו קובץ טקסט חדש בתיקייה חדשה בשרת שלכם, ותשנו את שם הקובץ ל".htaccess" (בלי להשאיר סיומת של txt.), והעתיקו לשם את הקוד הבא:
    1
    Options +FollowSymLinks

    RewriteEngine On

  2. היכנסו דרך הדפדפן לתיקייה החדשה שפתחתם, אם התיקייה עולה בלי שגיאת 500, Internal Server Error
    , סימן שmod_rewrite מותקן ומופעל בשרת שלכם.

במידה והוצג לכם שגיאת ה500, Internal Server Erro, תוכלו להפעיל את mod_rewrite בשלבים הבאים:

  1. גבו את קובץ httpd.conf (תוכלו למצוא אותו בד"כ בתיקיית conf / config וכד'.. (בFedora תוכלו למצוא אותו ב/etc/httpd/), וערכו אותו.
  2. חפשו את השורה LoadModule rewrite_module modules/mod_rewrite.so, הסירו ממנה את סימן הערה בהתחלה (סימן הסולמית).
  3. חפשו את השורה ClearModuleList ותוודאו שגם היא לא הערה, כנ"ל לגבי AddModule mod_rewrite.c.
  4. שמרו את הקובץ, ועשו ריסטרט לhttpd (לשרת הApache), בFedora הפקודה – /etc/init.d/httpd restart
    תעשה את העבודה.

אצלי הmod_rewrite כבר מופעל כברירת מחדל ובקובץ httpd.conf אין אצלי אף אחד מהשורות הללו, נתקלתי בעוד משתמשי Fedora באינטרנט שלא מצאו את השורות האלה לכן אל דאגה אם אין לכם חלק מהשורות הללו.

זה הכל, כעת אתם יכולים להשתמש ב-mod_rewrite לכל שימוש שעולה על רוחכם, המבקרים יהנו מכתובות נוחות ומנועי החיפוש (בתקווה) יהנו מכתובות מכוונות.

עוד באותו נושא:


Viewing all articles
Browse latest Browse all 2

Latest Images

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Vimeo 10.6.2 by Vimeo.com, Inc.

Vimeo 10.6.2 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.





Latest Images

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Vimeo 10.6.1 by Vimeo.com, Inc.

Vimeo 10.6.1 by Vimeo.com, Inc.