איך משנים דומיין ואיך מעבירים שרת באתר וורדפרס • מדריך

blog-02-07-15

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

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

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

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

אז איך עושים שינוי דומיין בוורדפרס?

ראשית כל תדאגו שיהיו לכם פרטי הגישה הבאים, במידה ואתם מעבירים אתר משרת לשרת, אז צריכים את פרטי הגישה של שני השרתים:

  1. FTP
  2. cPanel / DirectAdmin
  3. phpMyAdmin

לפני שנתחיל להלן תקציר המשימות שאנחנו הולכים לעשות:

  1. גיבוי
  2. העברת קבצים באמצעות FTP משרת לשרת
  3. העברת מסד נתונים על ידי ייצוא וייבוא ישירות מה phpMyAdmin
  4. שינוי פרטי גישה למסד נתונים בקובץ wp-config
  5. הרצת סקריפט שמשנה את כתובת ה URL במסד הנתונים

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

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

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

בנוסף, הרבה אזורים במערכת נשמרים במסד נתונים בפורמט serialize שהוא (בשונה מ JSON) מכניס לכל ערך את כמות התווים שמופיעה בו, לדוגמא: s:6:"string";. ולכן ברגע שמשנים דומיין שיש בו כמות אחרת של תווים, המערכת לא יודעת לקחת את הנתונים שלו ולכן אנחנו חייבים לעשות את השינוי הדומיין בשיטה הבאה שמבטיחה טיפול בכל המערכים והמחרוזות במסד הנתונים.

אוקי הבנתי, עכשיו מה הלאה?

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

תוכלו לקרוא עוד על גיבוי אתר וורדפרס בפוסט: איך עושים גיבוי ושחזור לאתר וורדפרס

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

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

קבצי מערכתברוב המקרים וורדפרס מותקנת על תיקיית public_html בשרת, אז פשוט תורידו את כל תכולת התיקיה שכוללת את קבצי PHP של המערכת וכן את תיקיות התוכן (wp-content)

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

wordpress-ftp
צילום מסך של FTP עם התקנת WordPress בשרת

מסד הנתונים
כדי לייצא ולייבא את מסד הנתונים יש להכנס אל phpMyAdmin בשרת.

  • בפאנל ניהול מסוג cPanel ישנה גישה ישירה אל ה phpMyAdmin
  • בפאנל ניהול מסוג DirectAdmin יש רק את הקישור אל המסד נתונים ותצטרכו את פרטי הגישה אליו. פרטי הגישה אל phpMyAdmin בד"כ נמצאים בקובץ wp-config שבתיקיה הראשית של וורדפרס. בקובץ זה גם מופיע השם המדויק של המסד נתונים בשרת
export-db
צילום מסך של עמוד Export ב phpMyAdmin
  • חפשו את לשונית הייצוא (Export) בחרו במצב Quick ותלחצו על Go להורדת הקובץ ושמרו אותו על המחשב שלכם
  • עברו אל phpMyAdmin בשרת החדש, פתחו מסד נתונים חדש ובלשונית Import בצעו ייבוא לקובץ אותו ייצאתם מהשרת הקודם
  • עכשיו יש לשנות את השם משתמש וססמה בקובץ wp-config בשביל המסד נתונים החדש

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

עדכון: 01.08.2016

שימו לב מפה והלאה המדריך רלוונטי רק לשרתים שמפעילים גרסת PHP 5.6 ומטה. במידה ויש לכם שרת שמפעיל PHP7 ומעלה ניתן להשתמש בסקריפט המעודכן בקישור הזה, או להשתמש בתוסף Search & Replace שיעשה זאת עבורכם ישירות באמצעות ממשק הוורדפרס.

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

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

  1. יש להוריד את הקובץ הבא: https://pojo.co.il/go/change-domain
  2. חלצו את הקובץ change-domain.php ולעלות אותו לתיקיה הראשית בשרת שלכם
  3. לאחר מכן יש לגשת לקובץ באמצעות הדפדפן עם כתובת הדומיין שלכם, לדוגמא: domain.com/change-domain.php

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

change-domain-1
עמוד שינוי כתובת הדומיין באתר

בשלב הראשון אנחנו בוחרים לטעון את ההגדרות דרך הקובץ wp-config – אפשר גם לערוך את הפרטים בשלב הבא.

לאחר שבחרתם את המסד הנתונים הרצוי תבחרו את הטבלאות בהם תרצו לעשות שינוי. בד"כ צריך לבחור את כל הטבלאות.

change-domain-3

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

בשדה הראשון יש להזין את הכתובת הישנה של האתר שלכם בפורמט כזה: http://old-domain.com

בשדה השני להזין את הכתובת החדשה באותו פורמט כמו למעלה. לדוגמא: http://new-domain.com

change-domain-4

שימו לב: חשוב מאוד לרשום את הכתובת המדוייקת ללא סלאשים או תווים מיותרים, בנוסף חשוב מאוד לרשום HTTP או HTTPS במידה ויש על האתר SSL

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

change-domain-final

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

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

יש לכם עוד שאלות על המדריך? אתם מוזמנים להגיב.

55 תגובות

  1. קובי הגב

    תודה רבה על המאמר או ללא ספק עזר לי מאוד השבוע
    וזה עבד מצוין
    תודה רבה

  2. JJ הגב

    עבד נהדר. תודה רבה

  3. נתן כהן הגב

    עלה לי מסך אחרי שינוי הדומיין במסד הנתונים עם השגיאה:

    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    איפה טעיתי?

  4. נתן כהן הגב

    בזמן העברת הקבצים מערכת ftp עידכנה אותי על קבצים זהים כגון: admin-he_IL.mo וסימנתי את אפשרות השיכתוב
    האם יש לזה קשר?

  5. נתן כהן הגב

    העלתי שוב את הכל מחדש והכל תקין עד השלב הזה. מה אני צריכה לעשות?

    • Ariel Klikstein הגב

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

  6. נתן כהן הגב

    נראה שיש לי טעות בסיסית.
    הדומיין לא השתנה רק האירוח השתנה. ולא הייתה צריכה להפעיל את הסקריפט הזה.
    האם יש פעולה שונה שעלי לשנות כי הרגע עולה לי מסך של "שגיאה במסד נתונים".
    http://www.davarnae.co.il/

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

    • Ariel Klikstein הגב

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

      אתה רק צריך להעביר את הקבצים ואת המסד נתונים לשרת החדש. לפי השגיאה שאתה מקבל נראה שהפרטי מסד נתונים השתנו בשרת החדש וצריך להגדיר אותם שוב בקובץ wp-config.php

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

  7. קובי הגב

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

  8. אוריאל הגב

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

    או לחילופין, מהי האלטרנטיבה הטובה ביותר להחלפת הלינקים מבלי להשתמש בסקריפט הנ"ל?

    תודה, אוריאל.

    • אוריאל הגב

      קבלו ביטול.
      מסתבר שחברת האחסון שמו לי פיירוול שמנע ממני להכנס אל לוח הבקרה. כמה ששברתי על זה את הראש… ):

      הסקריפט שלכם עובד מעולה!

      יישר כח!

  9. Uriel הגב

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

    • Ariel Klikstein הגב

      זה כבר בד"כ קשור להגדרות DNS שנמצאות ב CPanel או DIrectAdmin תבדוק מול חברת האחסון שלך איך להעביר את זה בצורה הכי יעילה

  10. yael zecharia הגב

    0 שורות השתנו לי.
    לא שינה כלום. מישהו יודע למה?

  11. שי הגב

    תודה !!!! עזרתם לי מאוד להעביר את הדומיין לשרת חדש.ישר כוח !!!!

  12. מני הגב

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

  13. יאיר דניאל הגב

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

  14. yosi הגב

    היי שלום, הסקריפט עד לי בעבר לאתר אחר, אך כעת אני רק רוצה לשנות את הדומיין כאשר האתר נשאר על אותו שרת,כאשר אני מריץ את הכתובת של האתר + change-domain.php הוא פותח לי את העמוד הראשון וכן משיך הלאה לעמוד השני, אך בSTEP3 זה לא עובד, וכתוב לי שהדומיין לא יכול לטפל ברגע זה בבקשה… יש לכם מושג למה זה קורה?

    • Ariel הגב

      @yosi זה נראה כמו חסימה של בקשות בשרת או משהו, הייתי ממליץ לך לפנות לחברת האחסון עם הבעיה

  15. מעיין הגב

    עובד מעולה !!! תודה רבה !!!!

  16. Michal Cartoon הגב

    מעולה ! תודה רבה.

  17. Moshe הגב

    העברתי האתר מה localhost לאתר החיצוני. העברתי את ה D.B גם כן.שיניתי בקובץ ה config את נתוני הD.B. שתלתי את קובץ ה change באתר. העלתי את האתר /change. שניתי את מה שצריך לשנות בקובץ שעלה.לבסוף קיבלתי שהתהליך הושלם בהצלחה. למעשה לא השתנה דבר.אפשר להעלות את דף הבית באתר החיצוני,כל מעבר לדף אחר באתר מחזיר אותי ל localhost. אשמח לקבל מענה היכן הבעייה. תודה.

    • Ariel הגב

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

  18. רון הגב

    היי,
    הסקריפט אינו עובד מכיוון שאין יותר תמיכה ב mysql ב PHP7 –
    Warning
    This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
    mysqli_connect()
    PDO::__construct()

    לאחר עדכון כל הקישורים ל DB ל mysqli הוא לא מצליח לבצע את הפעולה כמו שצריך (אין שגיאה הוא פשוט מסיים את הפעולה ובסיכום מראה שלא נעשה שום שינוי)
    האם קיים עדכון לקובץ?

    תודה מראש
    רון

  19. הפוטשק הגב

    מה קורה כאשר אני רוצה להעביר את האתר מאכסון אחד לחברה אחרת,
    אותו דומיין,
    אותו הכל?

    • Ariel הגב

      המדריך הזה ברובו אינו רלוונטי להעברת אתר בין שרתים.

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

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

  20. איתי הגב

    מדהים.

  21. Joe הגב

    Hello Ariel,
    I've recently migrated my site from local host to live server. Since I have my theme Avada doesn't load correctly. The structure of the theme is looks fine visually, but plugins like Fusion aren't working so only html and inline css are showing currently on my page. There is an old site in my ftp in a separate folder. I'm wondering if this could be conflicting with the new site and the Avada theme.
    Thanks in advance,
    Joe
    10fingers.tv

  22. חג'בי הגב

    שלום אריאל ,

    עשיתי בדיוק לפי המדריך המפורט שלך , ולא היו לי שום בעיות או שגיאות .

    שבאתי להיכנס לכתובת החדשה קיבלתי את השגיאה הבאה :

    "שגיאת התחברות למסד הנתונים"

    עשיתי ייבוא של מסד הנתונים הישן לחדש , החלפתי את הפרטים של המסד בקובץ
    wp-config וכו'

    אין לי מושג איפה הבעיה , אשמח לעזרה . תודה .

  23. ניר כתריאל הגב

    היי , הסקריפט הזה פועל גם על URL בעברית ? כלומר הוא תומך לינקים בעברית ?

  24. sarita הגב

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

    • Ariel הגב

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

  25. Yakir הגב

    כששמים אתר וורדפרס באינטרנט זה עולה כסף פעם אחת או חודשי

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

  26. בתאל הגב

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

    • Ariel הגב

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

  27. יוני הגב

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

    איך ניתן לפתור?

    תודה רבה

  28. אוהב פיירפוקס הגב

    הסקריפט המתורגם שלכם change-domain.php

    לא תומך ב PHP 7 אתם צריכים להוריד את המקור ולסדר שוב

    תודה על התמיכה וההשקה

  29. מירי הגב

    רשמת שבגרסת PHP 7 ומעלה צריך להשתמש בסקריפט מעודכן יותר,
    הורדתי אותו והוא נראה שונה מההדרכה שאתה שמת
    האם צריך לסמן את האופציה של use regex ב-וי ?
    תודה מראש

  30. גדי בן חמו הגב

    נפלא! תודה

  31. יעל הגב

    אני מתחילה לבנות אתר בוורדפרס אני קניתי דומיין בחברה חיצונית איך אני מפעילה את הכתובת הזו בוורדפרס?

  32. ami henya הגב

    שלום,
    ביצעתי העברת דומיין ולא כל האלמנטים באלמנטור עברו: תמונה, רקע של תמונה וכו…
    ראיתי שאיפשהו נכתב (ב-2016)
    שמכיוון שאלמנטור עובד עם Json, יש צורך לבצע שלב נוסף בתהליך
    וצריך להחליף ישירות ב-DB את זה.
    האם אין דרך אחרת ? האם ביצעתם הדרכה לזה או עדכנתם את האפשרות הזאת ?

השארת תגובה