וורדפרס ואתרי אינטרנט

owl-158414_960_720
דורג 5 מתוך 5

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

htaccess ומוד rewrite

 

mod_rewrite

mod_rewrite זו הרחבה לשרת ה-Apache  כאשר המוד מופעל הוא גורם לכך ששהשרת ידע לנתח כתובות מסויימות שמוגדרות לו בקובץ   htaccess שזה קובץ ללא שם עם סיומת htaccess. לא ניתן ליצור קובץ כזה דרך מערכת ההפעלה. יש לפתוח עורך טקסט ולבחור באפשרות "Save as" עם שם ריק וסיומת.htacces

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

לדוגמא גולש נכנס לכתובת

http://support.netjos.com/test

ובעצם הכתובת האמיתית של השרת לפני ההפניה היתה זו

http://support.netjos.com/test

הדבר גורם ל SEO טוב יותר ויש עוד כמה שימושים נוספים שעליהם נדון בהמשך.

במערכת וורדפרס השינוי מתבצע בהגדרות מבנה קישורים.

 

דוגמא לכלל בקובץ .htaccess

RewriteEngine On
RewriteRule wp-login_security wp-login.php
RewriteRule contact_us index.php?p=3

השורה הראשונה מפעילה את מנוע שִכתוב הכתובות.
כל פקודה מתחילה מהמילה RewriteRule – "כלל שכתוב", כאשר הכתובת שהשרת מצפה לקבל מופרדת ברווח מהכתובת שהשרת יבצע

בדוגמא הראשונה כל מי שיכנס לשרת ויכתוב

wp-login_security זה יהיה כיאילו הוא כתב wp-login.php הדוגמא הזאת למשל טובה כדי להחביא login אם כי צריך גם לבטל את האפשרות של הכניסה מה login

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

המוד מבוסס על ביטויים רגולריים. כדאי לחזור כדי לשלוט בו היטב.

דגלים.

השימוש בדגלים נעשה ע"י הוספת סוגריים מרובעים [] בסוף שורת הפקודה.

NC – no case 

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

למשל Netjos יהיה זהה ל netjos

דוגמא:

RewriteRule page/([a-z0-9_]+) page.php?id=$1 [NC]

הכלל אומר שכאשר אנחנו נכנס לכתובת page/2 אזי אנחנו ננותב כיאילו נכנסנו לכתובת page.php?id=1 הוספת הדגל גורמת לזה שגם נוכל לכתובת Page באותיות גדולות וזה יפרש את זה אותו דבר.

QSA – Query String Append

הדגל QSA דואג לשמר את הפרמטרים בכתובת (http://support.netjos.com/exp?post=43&operation=edit) , מכיוון שהם עשויים להיעלם הי השרת כביכול מעביר בקשה חדשה.

RewriteRule exp index.php?page=exp [QSA]

 

כשנגלוש אל

http://example/exp?post=43&operation=edit

הפרמטרים יישמרו, והבקשה תועבר אל
http://example/index.php?page=exp&post=43&operation=edit.

L – Last

לכתובת http://example.com/abcmus יכולים להתאים כמה תנאים במקביל.

RewriteEngine On
RewriteRule a index.php?action=a
RewriteRule ab index.php?action=ab
RewriteRule abc index.php?action=abc

abcmus מתאימה לכל שלושת התנאים. השרת יעבור תנאי אחר תנאי ויבדוק אותם. התנאי האחרון שיתאים לו – הוא זה שישתמש בו. כלומר, abcmus יפנה אל action=abc.
על מנת למנוע מהשרת להמשיך את הבדיקה ברגע שתנאי מסוים תואם, ולא להמשיך בכל זאת לעבור תנאי אחר תנאי – נשתמש בדגל Last. כלומר, אם התנאי התאים – תנצל אותו ואל תבדוק תנאים אחרים.

RewriteEngine On
RewriteRule a index.php?action=a [L]
RewriteRule ab index.php?action=ab [L]
RewriteRule abc index.php?action=abc [L]

ברגע שתנאי a התאים, לא תתבצע בדיקה של שאר התנאים, והשרת יעשה את הפעולה שלו.

לחבר דגלים

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

RewriteRule alex index.php?act=alex [L,NC,QSA]

500 Server Error

העתקתם את הדוגמה וקיבלתם שגיאת 500? הסיבה לכך היא שהרחבת ה-mod_rewrite כבויה.
בתפריט ה-Wamp מצאו תחת apache modules את mod_rewrite, סמנו לידו v והפעילו את השרת מחדש.
לבעלי שרתים משלהם – מצאו בקובץ httpd.conf את mod_rewrite והורידו את הנקודה-פסיק לפני ה-load_module. אחרי הפעלה מחודשת של השרת הכול יעבוד.

קבצים קיימים

ברוב המקרים, אם יש בקשה לקובץ קיים – style.css, למשל – אנחנו רוצים שהשרת פשוט יבצע את הבקשה בלי להתחיל לעבור את כל התנאים. שלושת השורות הבאות מצילות את המצב:

# If the file exists – proccess the file, if not – proccess other rules
RewriteCond %{REQUEST_FILENAME} f [OR]
RewriteCond %{REQUEST_FILENAME} d
RewriteRule .* [L]

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

קישורים בעברית

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

זהו זה, אתם מוכנים ליצור כתובות קצרות, יפות, שונות ומשונות כפי שבא לכם וכפי שהאתר הזה עושה.
ותתחילו מלהוריד את ה-www. 😉

עדיף להשים את כל הקוד תחת

<IfModule mod_rewrite.c>
THE CODE
</IfModule>

ובמידה והשרת לא תומך ב-mod_rewrite והמודול לא מותקן – לא מקבלים שגיאות 500.

 

דוגמא:

<IfModule mod_rewrite.c>

# If the file exists - proccess the file, if not proccess other rules
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

RewriteRule ^alex$ index.php?act=alex [L,NC,QSA]
RewriteRule ^John$ index.php?nhoj=tca [L,NC,QSA]

</IfModule>

 

תפריט נגישות