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

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

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

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

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

56 תגובות

  1. קובי Reply

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

  2. JJ Reply

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

  3. נתן כהן Reply

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

    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. נתן כהן Reply

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

  5. נתן כהן Reply

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

    • Ariel Klikstein Reply

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

  6. נתן כהן Reply

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

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

    • Ariel Klikstein Reply

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

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

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

  7. קובי Reply

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

  8. אוריאל Reply

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

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

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

    • אוריאל Reply

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

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

      יישר כח!

  9. Uriel Reply

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

    • Ariel Klikstein Reply

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

  10. yael zecharia Reply

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

  11. שי Reply

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

  12. מני Reply

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

  13. יאיר דניאל Reply

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

  14. yosi Reply

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

    • Ariel Reply

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

  15. מעיין Reply

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

  16. Michal Cartoon Reply

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

  17. Moshe Reply

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

    • Ariel Reply

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

  18. רון Reply

    היי,
    הסקריפט אינו עובד מכיוון שאין יותר תמיכה ב 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. הפוטשק Reply

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

    • Ariel Reply

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

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

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

  20. איתי Reply

    מדהים.

  21. Joe Reply

    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. חג'בי Reply

    שלום אריאל ,

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

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

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

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

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

  23. ניר כתריאל Reply

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

  24. sarita Reply

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

    • Ariel Reply

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

  25. Yakir Reply

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

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

  26. בתאל Reply

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

    • Ariel Reply

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

  27. יוני Reply

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

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

    תודה רבה

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

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

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

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

  29. מירי Reply

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

  30. גדי בן חמו Reply

    נפלא! תודה

  31. יעל Reply

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

  32. ami henya Reply

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

  33. שרון Reply

    השנה 2019 היום ניתן לתקן את שינוי הדומיין במסד הנתונים על ידי אלמנטור

השארת תגובה