חיפוש ]

על הפניות וביטויים רגולריים (Regex) בוורדפרס

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

ביטויים רגולריים (בקצרה regex), מעבר להיותם שפה חדשה, הם גם מעט שונים בין קונטקסט לקונטקסט. לדוגמה, ניתן להשתמש בהם ב PHP, אך הם מעט שונים ב Javascript ואף שונים כשמבצעים הפניות 301. הוסיפו לכך שזהו אינו נושא שרוב המפתחים מתעסקים בו ביום יום ותסיימו עם לא מעט העתק/הדבק, ניסוי וטעייה ותהליך שלוקח יותר זמן ממה שאמור לקחת בדרך כלל.

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

בפוסט הבא אני מסביר מהן הפניות 301. אם אינכם יודעים מה אלו תנו מבט…

תוסף הפניות – וורדפרס (Redirection Plugin)

אתם ודאי יודעים כי הפניית כתובת URL ישנה שאינה בשימוש לעמוד חדש הכרחית לטובת קידום האתר בגוגל ועבור SEO. ביצוע הפניות מאפשר לקחת את כח הדירוג (Link Equity) הקיים בכתובת הישנה ולהעבירו לכתובת החדשה.

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

ישנם לא מעט דרכים לגשת להפניות, אך הדרך הפשוטה והקלה ביותר לניהול הפניות הינה שימוש בתוסף Redirection של John Godley.

שימו לב כי ישנם תוספים עם שם דומה, וודאו כי אתם משתמשים בתוסף זה לצורך המדריך.

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

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

התקנת התוסף Redirection

התקינו והפעילו את התוסף Redirections וגשו לכלים > Redirection בכדי להתחיל.

התקנת התוסף Redirection

בהמשך ליתרונות שהצגנו, השימוש בתוסף Redirection מבטל את הצורך לגעת בקוד (htaccess) ומאפשר ביצוע הפניות אוטומטיות ברגע שינוי כתובת URL של פוסט מסויים. עם זאת, ברמת ביצועים של אותה הפנייה רצוי לבצע זאת ברמת השרת, אך נדגיש ונאמר כי ההבדל בביצועים מאד זניח.

ביטויים רגולריים והפניות – Prefix & Suffix

שתי קומפוננטות עיקריות של הפניות עם ביטויים רגולריים הן התו הראשון והאחרון – Prefix & Suffix או במילים אחרות תחילית וסופית.

אלו מאפשרים לכם לקבוע את תחילתו וסופו של הביטוי ומונעים לא מעט טעויות הגורמות ללולאות הפניה (Redirect Loops) כאשר אינכם משתמשים באלו כראוי. הנה דוגמה:

^/old-page/$

והנה כיצד זה נראה בתוסף Redirection:

ביטויים רגולריים והפניות

יש לשים לב כי תיבת הסימון Regular Expressions מסומנת כמובן בכדי שהתוסף יכבד את הביטויים הרגולריים.

ביטוי, או הפניה זו תתממש אך ורק לעמוד http://domain.co.il/old-page/ בדיוק בפורמט הזה. אם לא היינו מוסיפים את התחילית (^) והסופית ($), ההפנייה הייתה מתבצעת גם עבור http://domain.co.il/about/old-page/ למשל.

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

מה לגבי אותו Trailing Slash?

אולי שמתם לב כי הדוגמה שהבאנו רלוונטית עבור /old-page/ עם Trailing Slash בסופו, אך אינה תתאים ל /old-page ללא Trailing Slash. מכיוון ורבים אלו שבוחרים להשתמש ב Trailing Slash בסוף כתובת ה URL ורבים שבוחרים אחרת, זו חייבת להלקח בחשבון ביצירת הפניות באתר.

אתם מוזמנים לתת מבט בסיום מדריך זה על חשיבות ה Trailing Slash בכתובות URL.

הנה דרך לבצע ביטוי רגולרי יחיד התואם לעמוד בשני המצבים, בין עם Trailing Slash ובין אם ללא:

^/old-page[/]?$

הוספנו את ה [/]?$ על מנת לציין כי על ההפנייה להתייחס לתו זה כאופציונלי. בכדי להבין טוב יותר, בואו נתאר בפרוטרוט ביטוי רגולרי זה:

  • ^ = תחילתה של כתובת ה URL (כלומר שם הדומיין + הסיומת).
  • /old-page = חייב להופיע בכתובת ה URL ישר לאחר תחילתה של הכתובת.
  • [/]? = בנקודה זו יכול להיות התו ״/״ או לא.
  • $ = סוף כתובת ה URL.

טכניקה זו מאפשרת לכם ליצור הפנייה אחת המכסה שתי אפשרויות בכתובת ה URL, עם וללא Trailing Slash. אך הטכניקה שנראה בסעיף הבא חזקה אף יותר…

שימוש ב Wildcards עבור הפניות

הפניית Wildcard מאפשרת לכם ליצור הפנייה המבוססת על כל עמוד התואם את תבנית (pattern) של ביטוי רגולרי כלשהו, ללא הבחנה של כתובת URL ספציפית.

אפשרות זו שימושית במיוחד עבור הפניית תיקיות שלמות או חלקים באתר ישן לאתר חדש. לדוגמה, ניתן להשתמש בהפנייה זו בכדי להפנות את כל כתובות ה URL המתחילות ב /products/ (רבים) לכתובת URL התואמת /product/ (יחיד).

הנה למשל ביטוי רגולרי אליו כתובת המקור של ההפנייה צריכה להתאים (Source URL):

^/old/(.*)$
  • ^ = תחילתה של כתובת ה URL.
  • /old/ = חייב להופיע בכתובת ה URL ישר לאחר תחילתה של הכתובת.
  • (.*) = WildCard. יתאים לכל מחרוזת בכתובת לאחר /old/ ושומר זאת לשימוש בכתובת היעד של ההפניה (Target URL).
  • $ = סוף כתובת ה URL. במקרה ספציפי זה לא באמת רלוונטי כי אנו ״תופסים״ כל מחרוזת בסוף הכתובת באמצעות ה Wildcard. אך אין זה מזיק להוסיפו.

והנה כתובת היעד (Target URL):

/new/$1

החלק $1 מדפיס את המחרוזת אותה ה Wildcard תופס בכתובת המקור. תיאורטית ניתן להשתמש במספר לא מוגבל של Wildcards כבדוגמה הבאה:

^/old/(.*)/old-section/(.*)

וזה יבצע הפנייה לכתובת ה URL הבאה:

/new/$1/new-section/$2

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

בדיקה וביצוע הפניות בצורה חלקה

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

  • לפני בדיקת ההפנייה וודאו כי זכרון המטמון (Cache) נקי לוקאלית וברמת השרת.
  • השתמשו ב Incognito/Private Browsing מכיוון ודפדפנים לא פעם שומרים את ההפנייה בזכרון מאחורי הקלעים כך שייתכן ולא תראו את ההפנייה מיידית. אם אתם משתמשים בתוסף קאש כלשהו, קאש ברמת השרת או Cloudflare לדוגמה וודאו כי אתם מנקים אלו גם כן.
  • המנעו משרשור הפניות ככל הניתן. זה יכול ליצור בלבול מיותר ואין זה אידיאלי עבור SEO. נסו לשמור על הפניה אחת מקסימום לכתובת URL ולהמנע משרשור הפניות.
  • אם אתם נתקלים בלולאת הפניות (Redirect Loop) בזמן השימוש בתוסף Redirection, וודאו כי אין התנגשות עם הפניות אחרות, כאלו המופיעות בקובץ htaccess למשל.
  • עליכם לדעת כי הפניות דרך קובץ htaccess מתבצעות קודם להפניות המבוצעות ברמת התוסף.

לסיכום

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

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

  • ענת 26 מאי 2019, 14:53

    הי רועי,
    האם אפשרי לבצע הפנייה כאשר האתר עם הדומיין הישן לא נבנה במערכת וורדפרס?
    איך התוסף מזהה את הבעלות שלי על שני הדומיינים כדי לאפשר את ההפנייה הזו? צריך להגדיר משהו בהגדרות של הדומיין?

    • רועי יוסף 26 מאי 2019, 15:30

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

      בהצלחה!

  • שחר 25 אוגוסט 2019, 10:20

    תודה רבה

  • נתן 13 אפריל 2020, 17:07

    איך אני כותב ביטוי רגולרי שמפנה קישורים עם מבנה קישורים תאריך ופוסט למבנה קישורים פוסט וקטגוריה

    • רועי יוסף 13 אפריל 2020, 17:10

      מה בדיוק מבנה הקישורים הנוכחי שלך?

  • נתן 13 אפריל 2020, 18:32

    מבנה הקישורים הנוכחי זה שם אתר, תאריך ושם הפוסט

    • רועי יוסף 13 אפריל 2020, 19:16

      תדייק, תאריך יכול להיות מספר אופציות שונות.

תגובה חדשה

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

Savvy WordPress Development