העברת אתר וורדפרס משרת פיתוח לשרת הלקוח או שינוי כתובת הדומיין באתר הינה משימה פשוטה מעיקרה, אך משתמשים רבים ומנוסים מסתבכים עם תהליך זה ולא מצליחים להעביר אתר משרת לשרת בצורה מושלמת. אז כתבנו מדריך מסודר שיעשה לכם קצת סדר ויתן לכם את הכלים כיצד להעביר אתר וורדפרס בצורה יעילה ובטוחה.
הבעיה
רוב מפתחי האתרים שבונים אתר ללקוח בד"כ עושים זאת על שרת פיתוח מקומי או על כתובת דומיין זמנית, כאשר בסוף תהליך הפיתוח מעבירים את האתר החדש אל הדומיין הסופי של הלקוח. במקרים אחרים בונים את האתר על סאב-דומיין וכאשר מסיימים את תהליך הפיתוח צריכים לשנות את הכתובת לדומיין הראשי.
אך מה שקורה שלאחר שמשנים את כתובת הדומיין פתאום מגלים שתכנים מסוימים נעלמו, קישורים שבורים או קישורים שמפנים לכתובת ישנה ועוד כל מיני באגים מוזרים.
במקרים רבים אנחנו גם נתקלים במשתמשים שפשוט נכנסים אל הגדרות המערכת של WordPress ומשנים את ה URL, ובכך גם נחסמת להם הגישה אל לוח הבקרה לחלוטין, מה שמצריך אותם להתחבר אל מסד הנתונים ישירות ולשנות ידנית את ה URL.
אז איך עושים שינוי דומיין בוורדפרס?
ראשית כל תדאגו שיהיו לכם פרטי הגישה הבאים, במידה ואתם מעבירים אתר משרת לשרת, אז צריכים את פרטי הגישה של שני השרתים:
- FTP
- cPanel / DirectAdmin
- phpMyAdmin
לפני שנתחיל להלן תקציר המשימות שאנחנו הולכים לעשות:
- גיבוי
- העברת קבצים באמצעות FTP משרת לשרת
- העברת מסד נתונים על ידי ייצוא וייבוא ישירות מה phpMyAdmin
- שינוי פרטי גישה למסד נתונים בקובץ wp-config
- הרצת סקריפט שמשנה את כתובת ה URL במסד הנתונים
רקע טכני
כדי לעשות את השינוי בצורה מקצועית שתעביר את כל הנתונים בצורה טובה ניתן קצת רקע על תהליך שמירת הנתונים במסד הנתונים, מה שיעזור לכם להבין למה משתמשים רבים נתקעים בתהליך הזה.
מערכת וורדפרס מבוססת מסד נתונים מסוג MySQL בו נשמרים כל הנתונים של תוכן האתר; פוסטים, תגובות, טקסונומיות, הגדרות אתר, הגדרות התוספים והגדרת ערכת העיצוב. בקיצור, כל נתון שאתם משנים נשמר במסד הנתונים בטבלה המיועדת לו.
לדוגמה, בעת הוספת פוסט חדש, המערכת פותחת שורה חדשה וייעודית בטבלה של הפוסטים (wp_posts) ובו מופיעים כל פרטי הפוסט: כותרת, תוכן, סטטוס, מזהה פוסט ועוד. מה שקורה, במידה ואנחנו מכניסים פרטי מדיה לתוך עורך התוכן או לוידג'טים שונים, המערכת שומרת ה URL של המדיה בתוך העורך, וכך ברגע שעושים שינוי בצורה לא נכונה, כל הקישורים הללו נשברים ומביאים שגיאות 404.
בנוסף, הרבה אזורים במערכת נשמרים במסד נתונים בפורמט serialize שהוא (בשונה מ JSON) מכניס לכל ערך את כמות התווים שמופיעה בו, לדוגמא: s:6:"string";
. ולכן ברגע שמשנים דומיין שיש בו כמות אחרת של תווים, המערכת לא יודעת לקחת את הנתונים שלו ולכן אנחנו חייבים לעשות את השינוי הדומיין בשיטה הבאה שמבטיחה טיפול בכל המערכים והמחרוזות במסד הנתונים.
אוקי הבנתי, עכשיו מה הלאה?
גיבוי
לפני שעושים תהליך של שינוי כזה מאסיבי על המסד נתונים, הדבר הראשון שאתם צריכים זה גיבוי מסודר של המסד נתונים בגרסתו האחרונה. אתם יודעים, סוג של ביטוח למקרה והכל הלך לכם הפוך בדיוק.
תוכלו לקרוא עוד על גיבוי אתר וורדפרס בפוסט: איך עושים גיבוי ושחזור לאתר וורדפרס
ייצוא ייבוא
סעיף זה רלוונטי במידה ואתם מעבירים את האתר משרת אחד לשרת אחר, במידה ואתם נמצאים באותו שרת ורק מעוניינים לשנות את כתובת ה URL של המערכת תעברו לסעיף הבא.
לאחר שעשיתם גיבוי מסודר הגיע הזמן להעביר את כל הקבצים הרלוונטיים משרת הפיתוח אל השרת הסופי.
קבצי מערכתברוב המקרים וורדפרס מותקנת על תיקיית public_html בשרת, אז פשוט תורידו את כל תכולת התיקיה שכוללת את קבצי PHP של המערכת וכן את תיקיות התוכן (wp-content)
כנסו דרך ה FTP להורדת כל הקבצים ותורידו אותם אל המחשב שלכם. לאחר ההורדה של כל תוכן התיקיה תעלו אותו לשרת החדש לאותו מיקום בדיוק, לתיקיית public_html.
מסד הנתונים
כדי לייצא ולייבא את מסד הנתונים יש להכנס אל phpMyAdmin בשרת.
- בפאנל ניהול מסוג cPanel ישנה גישה ישירה אל ה phpMyAdmin
- בפאנל ניהול מסוג DirectAdmin יש רק את הקישור אל המסד נתונים ותצטרכו את פרטי הגישה אליו. פרטי הגישה אל phpMyAdmin בד"כ נמצאים בקובץ wp-config שבתיקיה הראשית של וורדפרס. בקובץ זה גם מופיע השם המדויק של המסד נתונים בשרת
- חפשו את לשונית הייצוא (Export) בחרו במצב Quick ותלחצו על Go להורדת הקובץ ושמרו אותו על המחשב שלכם
- עברו אל phpMyAdmin בשרת החדש, פתחו מסד נתונים חדש ובלשונית Import בצעו ייבוא לקובץ אותו ייצאתם מהשרת הקודם
- עכשיו יש לשנות את השם משתמש וססמה בקובץ wp-config בשביל המסד נתונים החדש
בהנחה שכבר עשיתם שינוי הפניה DNS בדומיין מהשרת הישן לחדש, עכשיו תוכלו לעבור למלאכת שינוי הכתובת, במידה ועדיין לא שיניתם את הפניות ה DNS, אתם יכולים לשנות במחשב שלכם את הקובץ hosts עם ה IP של השרת או לחכות לעדכון ה DNS. מדריך הגדרות Hosts תוכלו למצוא כאן.
עדכון: 01.08.2016
שימו לב מפה והלאה המדריך רלוונטי רק לשרתים שמפעילים גרסת PHP 5.6 ומטה. במידה ויש לכם שרת שמפעיל PHP7 ומעלה ניתן להשתמש בסקריפט המעודכן בקישור הזה, או להשתמש בתוסף Search & Replace שיעשה זאת עבורכם ישירות באמצעות ממשק הוורדפרס.
בכל מקרה יש לעשות גיבוי לכל המסד נתונים לפני כל שינוי כזה במסד נתונים, וכמובן מחיקת התוסף או הסקריפט מיד לאחר השימוש כדי למנוע פירצות אבטחה חמורות.
שינוי כתובת האתר
על מנת לשנות את הכתובת, אנחנו נצטרך לחפש בכל המסד נתונים של האתר שלנו את הכתובת הישנה, ואז לעשות לה החלפה לכתובה החדשה. על מנת לעשות את ההחלפה, ישנו סקריפט נהדר שפותר את כל הבעיות שרק יכולות לצוץ, אנחנו כמובן תרגמנו אותו לעברית במיוחד בשבילכם.
- יש להוריד את הקובץ הבא: https://pojo.co.il/go/change-domain
- חלצו את הקובץ change-domain.php ולעלות אותו לתיקיה הראשית בשרת שלכם
- לאחר מכן יש לגשת לקובץ באמצעות הדפדפן עם כתובת הדומיין שלכם, לדוגמא:
domain.com/change-domain.php
תגיעו לעמוד שמאפשר לכם להריץ סקריפט שעושה החלפה אוטומטית (Replace) במסד הנתונים על כתובת הדומיין הישנה עם הכתובת דומיין החדשה.
בשלב הראשון אנחנו בוחרים לטעון את ההגדרות דרך הקובץ wp-config – אפשר גם לערוך את הפרטים בשלב הבא.
לאחר שבחרתם את המסד הנתונים הרצוי תבחרו את הטבלאות בהם תרצו לעשות שינוי. בד"כ צריך לבחור את כל הטבלאות.
בשלב הבא אנחנו צריכים להזין את המחרוזות להחלפה, מהדומיין הישן לדומיין החדש.
בשדה הראשון יש להזין את הכתובת הישנה של האתר שלכם בפורמט כזה: http://old-domain.com
בשדה השני להזין את הכתובת החדשה באותו פורמט כמו למעלה. לדוגמא: http://new-domain.com
שימו לב: חשוב מאוד לרשום את הכתובת המדוייקת ללא סלאשים או תווים מיותרים, בנוסף חשוב מאוד לרשום HTTP או HTTPS במידה ויש על האתר SSL
לאחר המעבר לשלב הבא הסקריפט ירוץ על כל המסד נתונים ויבצע את ההחלפה בצורה די מהירה, כאשר לאחר ההחלפה תגיעו לעמוד ובו ההודעה שהתהליך הושלם וכל המחרוזות הוחלפו בהצלחה.
חשוב מאוד לאחר שהסקריפט סיים לעבוד, יש למחוק אותו מהשרת. אתם לא ממש תרצו שלמישהו תהיה גישה לקובץ הזה, באמצעותו ניתן לעשות נזקים די גדולים באתר שלכם. אז בסיום השלב של העברה, יש למחוק אותו במהירות האפשרית מהשרת.
כאן המקום להזכיר שמדובר בתהליך עדין מאוד שאינו ניתן לשינוי לאחר מכן, לכן כמו שכתבתנו כבר בהתחלה, יש לבדוק שיש לכם גיבוי מסודר לכל תקלה.
יש לכם עוד שאלות על המדריך? אתם מוזמנים להגיב.
תודה רבה על המאמר או ללא ספק עזר לי מאוד השבוע
וזה עבד מצוין
תודה רבה
עבד נהדר. תודה רבה
עלה לי מסך אחרי שינוי הדומיין במסד הנתונים עם השגיאה:
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)
איפה טעיתי?
היי נתן,
אין לזה שום קשר לסקריפט. יש לך בעיה ב-MySQL. תנסה להפעיל אותו מחדש או לפנות לבעל השרת שלך.
בזמן העברת הקבצים מערכת ftp עידכנה אותי על קבצים זהים כגון: admin-he_IL.mo וסימנתי את אפשרות השיכתוב
האם יש לזה קשר?
העלתי שוב את הכל מחדש והכל תקין עד השלב הזה. מה אני צריכה לעשות?
לא ברור עד איזה שלב הכל עובד ואיפה זה נתקע, האם אתם עושים שינוי דומיין או גם מעבירים אתר בין שרתים?
נראה שיש לי טעות בסיסית.
הדומיין לא השתנה רק האירוח השתנה. ולא הייתה צריכה להפעיל את הסקריפט הזה.
האם יש פעולה שונה שעלי לשנות כי הרגע עולה לי מסך של "שגיאה במסד נתונים".
http://www.davarnae.co.il/
הפעולות שביצעתי עד עכשיו היו:
הקבצים הועברו וגם שלב יבוא הDB הסתיים בהצלחה. ושיניתי את רישום הדומיין.
במידה ורק מעבירים אחסון, אז אין שום צורך בהפעלת הסקריפט הזה!!
אתה רק צריך להעביר את הקבצים ואת המסד נתונים לשרת החדש. לפי השגיאה שאתה מקבל נראה שהפרטי מסד נתונים השתנו בשרת החדש וצריך להגדיר אותם שוב בקובץ wp-config.php
אם אתה מסתבך עם הפעולה הזאת, הייתי מנסה לבקש סיוע מחברת האחסון החדשה שתעביר עבורך את האתר.
שלום
אני מנסה לשנות לשנות את כתובת הדומין
ביצעתי את כל הפעולות כמו שמוסבר
אבל הכתובת משתנה רק בעמוד הבית
בדקתי גם בממשק ניהול של הוורדפרס ומופיע שם כתובת הדומין הישנה
מה ניתן לעשות?
אשמח לעזרה
הסקריפט הזה אמור לרוץ על כל המסד נתונים ולשנות הכל, רגע, איך אתה נכנס לניהול של האתר שלך, עם הכתובת הישנה או החדשה?
עם הכתובת הישנה הוא לא נותן לי להיכנס עם הכתובת החדשה
צריך להבין יותר מה הסיפור, עדיף שתעבור לפורום התמיכה וננסה לעזור בצורה מסודרת יותר
משום מה, בכל פעם שאני משתמש ב-change-domain.php, אני לא יכול להיכנס יותר אל הדשבורד.
אם אני עושה את כל התהליך ולא משתמש בו, הכל עובד מצוין (מלבד החלפת הלינקים כמובן). יש איזשהו הסבר לבעיה?
או לחילופין, מהי האלטרנטיבה הטובה ביותר להחלפת הלינקים מבלי להשתמש בסקריפט הנ"ל?
תודה, אוריאל.
קבלו ביטול.
מסתבר שחברת האחסון שמו לי פיירוול שמנע ממני להכנס אל לוח הבקרה. כמה ששברתי על זה את הראש… ):
הסקריפט שלכם עובד מעולה!
יישר כח!
מה לגבי העברה של שירות המיילים שקיימים בחברות האחסון ושמקושרות לדומיין? מה בעצן צריך לעשות כדי שגם הן יעברו כמו שצריך?
זה כבר בד"כ קשור להגדרות DNS שנמצאות ב CPanel או DIrectAdmin תבדוק מול חברת האחסון שלך איך להעביר את זה בצורה הכי יעילה
0 שורות השתנו לי.
לא שינה כלום. מישהו יודע למה?
תודה !!!! עזרתם לי מאוד להעביר את הדומיין לשרת חדש.ישר כוח !!!!
היי, יש למישהו ניסיון מה קורה אם ההתקנה המקורית בשרת הזמני (דומיין זמני) הייתה דרך Insalletron ? עדיין תהיה אפשרות לגיבויים, שדרוגים וכו' עם הדומיין החדש?
לא אמורה להיות בעיה, זה לא משהו שצריך לשנות את התהליך
לא הצלחתי לעלות את האתר באחסון החדש למרות שנראה לי שעשיתי הכל , והכל נראה תקין.
איך בודקים מה דילגתי?
האם את הקבצים אתה מצליח לראות בשרת, איפה בדיוק הבעיה?
היי שלום, הסקריפט עד לי בעבר לאתר אחר, אך כעת אני רק רוצה לשנות את הדומיין כאשר האתר נשאר על אותו שרת,כאשר אני מריץ את הכתובת של האתר + change-domain.php הוא פותח לי את העמוד הראשון וכן משיך הלאה לעמוד השני, אך בSTEP3 זה לא עובד, וכתוב לי שהדומיין לא יכול לטפל ברגע זה בבקשה… יש לכם מושג למה זה קורה?
@yosi זה נראה כמו חסימה של בקשות בשרת או משהו, הייתי ממליץ לך לפנות לחברת האחסון עם הבעיה
עובד מעולה !!! תודה רבה !!!!
מעולה ! תודה רבה.
העברתי האתר מה localhost לאתר החיצוני. העברתי את ה D.B גם כן.שיניתי בקובץ ה config את נתוני הD.B. שתלתי את קובץ ה change באתר. העלתי את האתר /change. שניתי את מה שצריך לשנות בקובץ שעלה.לבסוף קיבלתי שהתהליך הושלם בהצלחה. למעשה לא השתנה דבר.אפשר להעלות את דף הבית באתר החיצוני,כל מעבר לדף אחר באתר מחזיר אותי ל localhost. אשמח לקבל מענה היכן הבעייה. תודה.
נראה שמשהו לא השתנה כמו שצריך במסד נתונים ולכן זה קורה. אם אתה מסתבך עם זה אולי עדיף לך להשתמש בתוסך כמו Duplicator כדי להעביר את האתר
היי,
הסקריפט אינו עובד מכיוון שאין יותר תמיכה ב 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 הוא לא מצליח לבצע את הפעולה כמו שצריך (אין שגיאה הוא פשוט מסיים את הפעולה ובסיכום מראה שלא נעשה שום שינוי)
האם קיים עדכון לקובץ?
תודה מראש
רון
אתה צודק, מדריך ישן 🙁
הסקריפט הזה רלוונטי רק לגרסאות PHP 5.6 ומטה, כדי להשתמש בו בשביל PHP7 הייתי ממליץ לך להוריד את הקובץ מפה: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
או שפשוט תשתמש בתוסף כמו זה: https://wordpress.org/plugins/search-and-replace/
בכל מקרה חשוב מאוד לעשות גיבוי לכל הדטאבייס לפני כזה שינוי
מה קורה כאשר אני רוצה להעביר את האתר מאכסון אחד לחברה אחרת,
אותו דומיין,
אותו הכל?
המדריך הזה ברובו אינו רלוונטי להעברת אתר בין שרתים.
כדי להעביר את האתר משרת לשרת, צריך פשוט להעביר את הקבצים והמסד נתונים לשרת החדש. אם יש לך ממשק ניהול של Cpanel או Directadmin יש לך אפשרות לעשות גיבוי לשרת הנוכחי ולהעביר את כל החבילה (כולל את כל ההגדרות של הממשק) לשרת החדש. אחרי רק צריך לשנות DNS וזהו בגדול.
שים לב בד"כ חברות אחסון נותנות את השירות הזה בחינם ברגע שאתה עובר אליהם, אז הכי פשוט שהם יעשו בשבילך את התהליך
מדהים.
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
I don't know how Avada builder works, but I guess it's the best to ask the support of your theme
שלום אריאל ,
עשיתי בדיוק לפי המדריך המפורט שלך , ולא היו לי שום בעיות או שגיאות .
שבאתי להיכנס לכתובת החדשה קיבלתי את השגיאה הבאה :
"שגיאת התחברות למסד הנתונים"
עשיתי ייבוא של מסד הנתונים הישן לחדש , החלפתי את הפרטים של המסד בקובץ
wp-config וכו'
אין לי מושג איפה הבעיה , אשמח לעזרה . תודה .
כנראה שמשהו בפרטי התחברות לא עבד כמו שצריך, אם יש לך גיבוי זה הזמן להשתמש בו.
היי , הסקריפט הזה פועל גם על URL בעברית ? כלומר הוא תומך לינקים בעברית ?
לא ניסיתי, אבל לכאורה לא אמורה להיות בעיה עם זה
היי
בניתי אתר בתבנית לידר בכתובת זמנית. הרצתי את הסקריפט, קיבלתי הודעה על השינוי אבל עדיין כל האתר בכתובת הזמנית… הקובץ של הלוגו נעלם, כל התוכן של דף הבית נעלם וכשאני מנסה להגיע לכתובת החדשה דרך קובץ host האתר לא עולה בכלל! מה עושים?
תבדקי מול החברת אחסון שלך אולי הם יוכלו לעזור. זה מדריך למתקדמים, וצריך לעשות את זה בצורה זהירה.
כששמים אתר וורדפרס באינטרנט זה עולה כסף פעם אחת או חודשי
אם זה חודשי והאתר לא מצליח לי אני יכול למחוק את האתר ולהפסיק לשלם אם כן איך
תעזרו בבקשה
אתה יכול תמיד למחוק את האתר.
הי,
העברתי לפי המדריך וגם חברת האחסון תמכה בי קצת..
אבל נעלם לי התפריט הראשי מהאתר וגם כמה כותרות. מה זה יכול להיות?
בגדול אחרי תהליך כזה, הכל אמור לעבור אחד לאחד כמו שהיה, במידה והיו נפילות אני מעריך שזה בגלל שינוי של כמה דברים שיכולים לגרום לזה. כמו למשל מעבר לא טוב של טבלת ה options או משהו כזה
היי, ביצעתי את המדריך על מנת להעביר דומיין באתר.
סיימתי את כל השלבים וכן קיבלתי את ההודעה שההעברה בוצעה בהצלחה.
2 הדומיינים כרגע מפנים לאתר אך בשורת הדומיינים עדיין נשארתי עם הדומיין הישן.
איך ניתן לפתור?
תודה רבה
הסקריפט המתורגם שלכם change-domain.php
לא תומך ב PHP 7 אתם צריכים להוריד את המקור ולסדר שוב
תודה על התמיכה וההשקה
רשמת שבגרסת PHP 7 ומעלה צריך להשתמש בסקריפט מעודכן יותר,
הורדתי אותו והוא נראה שונה מההדרכה שאתה שמת
האם צריך לסמן את האופציה של use regex ב-וי ?
תודה מראש
נכון, הוא עובד קצת אחרת, צריך לעבוד לפי ההגדרות שלו.
נפלא! תודה
אני מתחילה לבנות אתר בוורדפרס אני קניתי דומיין בחברה חיצונית איך אני מפעילה את הכתובת הזו בוורדפרס?
לאחר רכישת דומיין צריך גם שרת אחסון שאפשר להתקין עליו וורדפרס, ניתן ללמוד עוד כאן: https://pojo.co.il/how-it-works/
שלום,
ביצעתי העברת דומיין ולא כל האלמנטים באלמנטור עברו: תמונה, רקע של תמונה וכו…
ראיתי שאיפשהו נכתב (ב-2016)
שמכיוון שאלמנטור עובד עם Json, יש צורך לבצע שלב נוסף בתהליך
וצריך להחליף ישירות ב-DB את זה.
האם אין דרך אחרת ? האם ביצעתם הדרכה לזה או עדכנתם את האפשרות הזאת ?
אם אתה מעביר דומיין עם אלמנטור, יש לנו כלי מובנה לשינוי הדומיין, תוכל לקרוא במדריך הבא: https://docs.elementor.com/article/218-i-changed-the-url-of-my-website-and-elementor-does-not-work-anymore
השנה 2019 היום ניתן לתקן את שינוי הדומיין במסד הנתונים על ידי אלמנטור