איך להעביר אתר וורדפרס (מיגרציה) בין שרתים / דומיינים?

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

מיגרציה של אתר וורדפרס היא לא תהליך מסובך במיוחד, אבל ראיתי לא מעט מעברים שנכשלו בגלל כמה פרטים קטנים שפוספסו. המדריך מתחיל בשיטה הידנית דרך ממשק הניהול של האחסון, ממשיך לגישה של שורת הפקודה עם SSH, WP-CLI ו-Git, ומסתיים בתקלות הנפוצות ובצ׳קליסט למעבר עצמו.

לשיטה הידנית, ודאו שיש לכם את הדברים הבאים:

  • גישה לממשק הניהול של וורדפרס (WP-ADMIN).
  • גישה לממשק הניהול של שרת האחסון (למשל cPanel).
  • גישת SFTP לשני השרתים (לא חובה, אפשר להשתמש ב-File Manager שבממשק הניהול).

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

באיזו שיטת מיגרציה כדאי לכם להשתמש?

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

שיטה מתאימה ל… רמת ידע
תוסף מיגרציה (למשל Duplicator) אתרים קטנים עד בינוניים ומעבר חד-פעמי מתחילים
ידנית, דרך ממשק הניהול של האחסון שליטה מלאה בלי לגעת בשורת הפקודה ביניים
SSH ו-WP-CLI אתרים גדולים, מעברים חוזרים, שרתים בלי cPanel מתקדמים
Git יחד עם SSH אתרים שהקוד שלהם כבר מנוהל ב-version control מתקדמים
שירות המיגרציה של חברת האחסון החדשה כל מי שעובר לחברת אחסון שמציעה שירות כזה לא נדרש ידע

לפני שמתחילים: הכנה למיגרציה

כמה דקות של הכנה מונעות את רוב הבעיות שמתוארות בהמשך המדריך:

  • בצעו גיבוי מלא של הקבצים ומסד הנתונים. עיינו במדריך איך לגבות ולשחזר אתר וורדפרס.
  • השוו את גרסאות ה-PHP וה-MySQL/MariaDB. בשרת החדש צריכות לרוץ אותן גרסאות, או גרסאות חדשות יותר שהתבנית והתוספים שלכם תומכים בהן.
  • הורידו את ה-TTL של רשומות ה-DNS לכמה דקות, יום או יומיים לפני המעבר, כדי שהחלפת ה-DNS הסופית תיכנס לתוקף במהירות.
  • הסירו את ה-Extended Protection של Wordfence אם אתם משתמשים ב-Firewall של Wordfence במצב optimized. הוא מצביע על נתיב קובץ מוחלט בשרת הישן ועלול לגרום לשגיאת 500 בשרת החדש.
  • תכננו חלון זמן שקט לחנויות ולאתרי מנויים. הזמנות, הרשמות ותגובות שנוספו בשרת הישן אחרי ייצוא מסד הנתונים לא יופיעו בשרת החדש.

מיגרציה ידנית של אתר וורדפרס לשרת חדש

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

שלב 1 – הורדת קבצי האתר למחשב שלכם

הדבר הראשון שצריך לעשות הוא להוריד את קבצי האתר למחשב. התחברו לשרת באמצעות FTP (עדיף SFTP) והורידו את התיקייה שבה נמצאת התקנת הוורדפרס. ברוב המקרים מדובר בתיקייה public_html או www.

בחירת כל קבצי וורדפרס בתוכנת FTP והורדתם למחשב באמצעות Download Selected Items

ודאו שתוכנת ה-FTP מציגה קבצים מוסתרים. קבצים שמתחילים בנקודה, כמו .htaccess ו-.user.ini, מוסתרים בדרך כלל כברירת מחדל, וקל להשאיר אותם מאחור.

לחלופין, אפשר להשתמש בממשק הניהול של האחסון (cPanel, Plesk וכו׳). היכנסו ל-File Manager, כווצו את הקבצים לקובץ Zip לפני ההורדה, ותחסכו הרבה זמן.

אפשר אפילו להוריד את הקובץ המכווץ מאותו ממשק, בלי צורך ב-FTP. לבחירתכם.

כיווץ קבצי וורדפרס לקובץ Zip באמצעות File Manager ב-cPanel לפני ההורדה

שלב 2 – הורדת מסד הנתונים מהשרת הנוכחי

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

קישור ל-phpMyAdmin באזור Databases בממשק הניהול של cPanel

לחצו על מסד הנתונים של האתר ואז על Export בסרגל הכלים העליון. בחרו באפשרות quick תחת Export method ולחצו על Go כדי להוריד את מסד הנתונים.

ייצוא מסד הנתונים של וורדפרס דרך לשונית Export ב-phpMyAdmin

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

שלב 3 – העלאת הקבצים לשרת האחסון החדש

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

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

שלב 4 – יצירת מסד נתונים בשרת האחסון החדש

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

כדי ליצור מסד נתונים חדש, היכנסו ל-MySQL Databases בממשק הניהול של השרת, לחצו על Create New Database ובחרו שם למסד הנתונים.

יצירת מסד נתונים חדש ב cPanel

לאחר מכן, היכנסו ל-Add New User באותו מסך. בחרו שם משתמש וסיסמה, וצרו משתמש חדש בלחיצה על Create User.

יצירת משתמש חדש למסד הנתונים ב cPanel

גללו מטה לחלק Add User to Database, בחרו את שם המשתמש ואת מסד הנתונים שיצרתם, ולחצו על Add.

הוספת המשתמש החדש למסד הנתונים ב cPanel

במסך הבא סמנו All Privileges כדי לתת למשתמש את כל ההרשאות הנחוצות, ואשרו בלחיצה על Make Changes.

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

שלב 5 – עדכון wp-config.php בהתאם למסד הנתונים החדש

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

  • DB_NAME – שם מסד הנתונים.
  • DB_USER – שם המשתמש של מסד הנתונים.
  • DB_PASSWORD – הסיסמה של מסד הנתונים.
  • DB_HOST – ה-host של מסד הנתונים. (ברוב המקרים זה יהיה localhost, אבל זה תלוי בחברת האחסון. אם localhost לא עובד, פנו לתמיכה של חברת האחסון).
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'xxxxxxxxx');
/** MySQL database username */
define('DB_USER', 'xxxxxxxxx');

/** MySQL database password */
define('DB_PASSWORD', 'xxxxxxxxx');

/** MySQL hostname */
define('DB_HOST', 'localhost');

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

השאירו את השורה של $table_prefix כפי שהיא. היא חייבת להתאים לקידומת של הטבלאות שאתם עומדים לייבא, ולכן שנו אותה רק אם לטבלאות המיובאות יש קידומת אחרת.

שלב 6 – ייבוא מסד הנתונים לשרת החדש

אחרי שיצרתם מסד נתונים חדש ועדכנתם את wp-config.php, היכנסו ל-phpMyAdmin בממשק הניהול של השרת החדש ובחרו את מסד הנתונים שיצרתם זה עתה. לחצו עליו ואז על Import בסרגל הכלים העליון.

לחצו על Choose File ובחרו את קובץ מסד הנתונים שהורדתם קודם לכן למחשב. לחצו על Go והמתינו לסיום הפעולה.

ייבוא קובץ מסד הנתונים לשרת החדש דרך כפתור Choose File ב-phpMyAdmin

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

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

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

עכשיו היכנסו ל-לוח הבקרה של וורדפרס > הגדרות > מבנה קישורים ולחצו על שמור שינויים.

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

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

אם החלפתם דומיין, עליכם לבצע כמה פעולות נוספות, כולל עדכון הכתובות במסד הנתונים לדומיין החדש:

א. שינוי השדות home ו-siteurl במסד הנתונים

ב-phpMyAdmin, מצאו את הטבלה wp_options ולחצו עליה כדי לראות את השדות שהיא מכילה.

ייתכן שלטבלה יש קידומת אחרת מ-wp_, אבל השם שלה תמיד יסתיים ב-options.

מצאו את השדות siteurl ו-home, ותראו שהערך שלהם הוא כתובת הדומיין הישן. ערכו את השדות והחליפו את הכתובת בדומיין החדש שלכם.

עריכת השדות siteurl ו-home בטבלת wp_options ב-phpMyAdmin לכתובת הדומיין החדשה

לחלופין, אם אתם לא מרגישים בנוח לעבוד עם phpMyAdmin, אפשר לדרוס את ההגדרות האלה באמצעות עריכת הקובץ wp-config.php והוספת השורות הבאות, כשאת example.co.il מחליפים בדומיין החדש שלכם:

define( 'WP_HOME', 'https://example.co.il' );
define( 'WP_SITEURL', 'https://example.co.il' );

השתמשו ב-https:// אם האתר שלכם משתמש בתעודת SSL. אם אתם עוברים ל-HTTPS באותו זמן, עיינו במדריך המלא למעבר ל-HTTPS.

ב. ביצוע Search & Replace לכל הכתובות במסד הנתונים

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

אחרי הפעלת Better Search Replace, היכנסו ל-Tools > Better Search Replace. הזינו את הדומיין הישן בשדה Search ואת הדומיין החדש בשדה Replace. בחרו את כל הטבלאות במסד הנתונים, והריצו קודם dry run כדי לראות תצוגה מקדימה של השינויים לפני שאתם מחילים אותם.

לעולם אל תבצעו חיפוש והחלפה על קובץ ה-.sql המיוצא בעורך טקסט. וורדפרס שומרת הגדרות רבות כנתונים סריאליים (serialized data) של PHP, שבהם נשמר האורך של כל מחרוזת. החלפת דומיין בדומיין באורך שונה שוברת את הרשומות האלה, והווידג׳טים, הגדרות התבנית והגדרות התוספים מתאפסים בלי שום התראה. Better Search Replace ו-WP-CLI מטפלים בנתונים סריאליים כמו שצריך.

הדרך של המפתחים: מיגרציה עם SSH ו-WP-CLI

אם יש לכם גישת SSH לשני השרתים, אפשר לוותר לגמרי על ההורדות, על קבצי ה-Zip ועל phpMyAdmin. הקבצים עוברים ישירות משרת לשרת, ו-WP-CLI מטפל במסד הנתונים, כולל החלפת הכתובות.

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

שלב 1 – העתקת הקבצים ישירות בין השרתים

התחברו לשרת החדש ב-SSH ומשכו את הקבצים מהשרת הישן עם rsync. החליפו את המשתמש, ה-host והנתיבים בפרטים שלכם:

rsync -avz --progress [email protected]:/home/user/public_html/ /home/newuser/public_html/

הלוכסן בסוף נתיב המקור מעתיק את תוכן התיקייה ולא את התיקייה עצמה. קבצים מוסתרים כמו .htaccess נכללים אוטומטית. אם תריצו את הפקודה שוב מאוחר יותר כדי לתפוס קבצים חדשים שהועלו, הוסיפו --exclude=wp-config.php כדי שהיא לא תדרוס את פרטי ההתחברות שתגדירו בשלב הבא.

אם rsync לא זמין, ארזו את האתר לקובץ ארכיון אחד בשרת הישן והעתיקו אותו עם scp:

# On the old server
tar -czf site-files.tar.gz -C /home/user/public_html .

# On the new server
scp [email protected]:/home/user/site-files.tar.gz .
tar -xzf site-files.tar.gz -C /home/newuser/public_html

שלב 2 – עדכון wp-config.php כך שיצביע על מסד הנתונים החדש

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

wp config set DB_NAME new_database_name
wp config set DB_USER new_database_user
wp config set DB_PASSWORD 'new-password'
wp config set DB_HOST localhost

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

שלב 3 – ייצוא וייבוא מסד הנתונים

ייצאו את מסד הנתונים בשרת הישן עם wp db export, העתיקו את הקובץ וייבאו אותו בשרת החדש. WP-CLI קורא את פרטי ההתחברות מתוך wp-config.php, ולכן השלב הקודם חייב לבוא לפניו:

# On the old server, inside the WordPress directory
wp db export site.sql --add-drop-table

# On the new server, inside the WordPress directory
scp [email protected]:/home/user/public_html/site.sql .
wp db import site.sql
rm site.sql

מחקו את קובץ ה-SQL בסיום הייבוא, בשני השרתים. קובץ גיבוי של מסד הנתונים שנשאר בתוך תיקיית האתר מאפשר לכל מי שמנחש את שם הקובץ להוריד אותו.

שלב 4 – החלפת הדומיין הישן (אם הוא השתנה)

אם הדומיין השתנה, wp search-replace יעדכן כל מופע שלו במסד הנתונים, כולל בנתונים סריאליים. התחילו ב-dry run כדי לראות כמה שורות ישתנו:

wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables --precise --skip-columns=guid --dry-run

אם הדוח נראה תקין, הריצו את אותה פקודה בלי --dry-run, ואז נקו את ה-cache ואת כללי ה-rewrite:

wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables --precise --skip-columns=guid
wp cache flush
wp rewrite flush --hard

הדגל --skip-columns=guid משאיר את ה-GUID של הפוסטים ללא שינוי, כפי שממליץ התיעוד של WP-CLI. אם באתר הישן עדיין יש קישורי http:// בתוכן, הריצו את הפקודה פעם נוספת עבור גרסת ה-http:// של הדומיין הישן.

איפה Git נכנס לתמונה

Git הוא דרך מצוינת לעשות deploy לקוד, אבל כשלעצמו הוא לא כלי מיגרציה. ריפוזיטורי טיפוסי של וורדפרס עוקב אחרי התבנית, התוספים המותאמים ו-mu-plugins. הוא לא כולל את תיקיית uploads, את מסד הנתונים או את wp-config.php, שמכיל מידע רגיש ואסור שייכנס ל-commit.

כך נראה בדרך כלל קובץ .gitignore של פרויקט וורדפרס:

wp-config.php
.env
wp-content/uploads/
wp-content/cache/
wp-content/upgrade/

כלומר, אם האתר שלכם כבר מנוהל ב-Git, המיגרציה מתחלקת לשלושה חלקים:

  1. קוד: בצעו clone לריפוזיטורי בשרת החדש, או תנו ל-pipeline של ה-deploy לדחוף אותו לשם.
  2. קבצים שהועלו: העתיקו את wp-content/uploads עם rsync, כמו שמוסבר למעלה.
  3. מסד נתונים: העבירו אותו עם wp db export ו-wp db import, ואז הריצו wp search-replace אם הדומיין השתנה.

היתרון האמיתי של Git מגיע אחרי המעבר. ברגע שהשרת החדש מושך קוד מריפוזיטורי, בין אם דרך pipeline של CI שעושה deploy ב-SSH ובין אם דרך ממשק אחסון עם אינטגרציה ל-Git, שינויים עתידיים עולים עם push במקום העלאה ב-FTP.

תקלות נפוצות במיגרציה ואיך לתקן אותן

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

האתר מפנה לדומיין הישן

הערכים home ו-siteurl בטבלת ה-options עדיין מצביעים על הדומיין הישן, או ש-WP_HOME ו-WP_SITEURL מוגדרים באופן קשיח ב-wp-config.php. תקנו אותם, נקו את תוסף ה-cache ובדקו בחלון גלישה פרטית, כי דפדפנים שומרים הפניות 301 ב-cache.

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

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

שגיאת 500 או מסך לבן

משהו בשרת החדש עדיין מחפש נתיב קובץ מהשרת הישן. החשודים הרגילים:

  • שורת auto_prepend_file ב-.user.ini או ב-.htaccess שטוענת את wordfence-waf.php מהנתיב הישן. עדכנו את הנתיב או הסירו את השורה, ואז הגדירו מחדש את האופטימיזציה של ה-Firewall של Wordfence.
  • קבצי ה-drop-in advanced-cache.php או object-cache.php בתיקיית wp-content, שנשארו מתוסף cache או מ-object cache שלא קיים בשרת החדש.
  • גרסת PHP בשרת החדש שהתבנית או התוספים שלכם לא תומכים בה.

הפעילו את WP_DEBUG_LOG ב-wp-config.php ובדקו את wp-content/debug.log כדי לראות את השגיאה המדויקת.

שגיאת "Unknown collation" בזמן הייבוא

מסד הנתונים יוצא מ-MySQL 8, שמשתמש ב-collation בשם utf8mb4_0900_ai_ci, ויובא ל-MariaDB או לגרסת MySQL ישנה יותר שלא מכירה אותו. החליפו את ה-collation בקובץ ה-SQL לפני הייבוא:

sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' site.sql

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

עמודים פנימיים מחזירים שגיאת 404

דף הבית נטען, אבל כל שאר העמודים מציגים 404. קובץ ה-.htaccess לא הועתק, בדרך כלל כי תוכנת ה-FTP הסתירה אותו. היכנסו ל-הגדרות > מבנה קישורים ולחצו על שמור שינויים כדי ליצור מחדש את כללי ה-rewrite.

אחרי המעבר: צ׳קליסט להחלפה ול-SEO

ברגע שהאתר עובד בשרת החדש, נשארו כמה צעדים לפני החלפת ה-DNS ואחריה.

לפני החלפת ה-DNS:

  • בדקו את האתר בכתובת זמנית או דרך קובץ ה-hosts.
  • התקינו תעודת SSL בשרת החדש. חלק מחברות האחסון יכולות להנפיק תעודה חינמית רק אחרי שהדומיין מצביע אליהן, אז בדקו את זה מראש.
  • אם נכנסו הזמנות או תגובות מאז שייצאתם את מסד הנתונים, ייצאו וייבאו אותו שוב ממש לפני ההחלפה.
  • אם אתם מעבירים את שרתי השמות (nameservers) של הדומיין לספק חדש, צרו שם קודם את רשומות ה-MX וה-TXT, אחרת המייל של הדומיין יפסיק לעבוד.

אחרי החלפת ה-DNS:

  • נקו כל שכבת cache: תוסף ה-cache, ה-cache של השרת וה-CDN (למשל Cloudflare).
  • ודאו שהאפשרות הגדרות > קריאה > לבקש ממנועי חיפוש לא לאנדקס את האתר אינה מסומנת. היא מופעלת לעיתים קרובות בסביבת staging ונשכחת שם.
  • צרו מחדש את משימות ה-cron של השרת, ושלחו מייל בדיקה מטופס יצירת קשר כדי לוודא ששליחת המיילים עדיין עובדת.
  • השאירו את חשבון האחסון הישן פעיל לפחות שבוע, עד שהתפשטות ה-DNS תסתיים ותהיו בטוחים ששום דבר לא חסר.

אם החלפתם דומיין

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

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?old-domain.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]

שנית, אמתו את שני הדומיינים ב-Google Search Console והגישו בקשת Change of Address עבור האתר הישן. ההנחיות של גוגל להעברת אתרים ברורות לגבי משך הזמן שבו ההפניות צריכות להישאר:

Keep the redirects for as long as possible, generally at least 1 year.

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

שאלות נפוצות

שאלות נפוצות בנושא העברת אתרי וורדפרס בין שרתים ודומיינים:

האם צריך להתקין מחדש את וורדפרס בשרת החדש?
לא. במיגרציה ידנית אתם מעתיקים את כל התקנת הוורדפרס (כל הקבצים ומסד הנתונים) לשרת החדש, כך שאין צורך להריץ שוב את ההתקנה. פשוט העלו את הקבצים, ייבאו את מסד הנתונים ועדכנו את wp-config.php עם פרטי מסד הנתונים החדש.
מה אם החלפתי רק שרת והשארתי את אותו דומיין?
אם הדומיין נשאר זהה, אפשר לדלג לגמרי על שלב 7. אחרי ייבוא מסד הנתונים ועדכון wp-config.php, הפנו את ה-DNS של הדומיין לשרת החדש ושמרו מחדש את מבנה הקישורים (Permalinks) בלוח הבקרה של וורדפרס. אין צורך בהחלפת כתובות.
אפשר לבדוק את האתר בשרת החדש לפני החלפת ה-DNS?
כן. אפשר לגשת לאתר דרך כתובת ה-IP של השרת או דרך כתובת זמנית שחברת האחסון מספקת. הצ׳קליסט למעבר, למעלה, מפרט מה לבדוק לפני שמבצעים את ההחלפה.
למה צריך להריץ חיפוש והחלפה על מסד הנתונים?
וורדפרס שומרת כתובות URL מלאות במסד הנתונים עבור תוכן הפוסטים, התמונות, הקישורים הפנימיים והגדרות הווידג׳טים. אם הדומיין השתנה, הכתובות האלה עדיין מצביעות על הדומיין הישן. פעולת חיפוש והחלפה מעדכנת את כולן בבת אחת, כך שהתמונות נטענות כראוי והקישורים הפנימיים עובדים בדומיין החדש.
אפשר להעביר אתר וורדפרס עם SSH ו-WP-CLI במקום cPanel?
כן, אם יש לכם גישת SSH לשני השרתים. העתיקו את הקבצים עם rsync, העבירו את מסד הנתונים עם wp db export ו-wp db import, עדכנו את פרטי ההתחברות עם wp config set, והריצו wp search-replace אם הדומיין השתנה. זה מהיר יותר מהשיטה הידנית ומתאים במיוחד לאתרים גדולים.
האם החלפת דומיין תפגע ב-SEO?
צפו לתנודות זמניות בדירוגים בזמן שגוגל סורק מחדש את האתר. כדי לקצר אותן, הפנו כל כתובת ישנה לכתובת המקבילה החדשה בהפניית 301, הגישו בקשת Change of Address ב-Google Search Console, והשאירו את ההפניות לפחות שנה. מעבר שרת שבו הדומיין נשאר זהה בדרך כלל לא משפיע באופן מורגש על ה-SEO, כל עוד האתר נשאר זמין במהלך ההחלפה.
עדיף להעביר ידנית או להשתמש בתוסף כמו Duplicator?
לרוב המשתמשים, תוסף כמו Duplicator מהיר יותר ופחות מועד לטעויות. מיגרציה ידנית עדיפה כשאתם צריכים שליטה מלאה בתהליך או רוצים להבין איך וורדפרס עובדת מאחורי הקלעים. לאתרים גדולים שתוספים מתקשים איתם, SSH ו-WP-CLI הם האפשרות האמינה ביותר.

סיכום

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

אם יש לכם גישת SSH, rsync ו-WP-CLI עושים את אותה עבודה מהר יותר ומתמודדים עם אתרים גדולים בלי מגבלות העלאה. Git משלים אותם ב-deploy של הקוד, אבל הקבצים שהועלו ומסד הנתונים עדיין עוברים בנפרד.

בכל שיטה שתבחרו, בדקו את האתר בשרת החדש לפני החלפת ה-DNS, ואם הדומיין השתנה, הגדירו הפניות 301 ובקשת Change of Address ב-Search Console. ואם אתם מעדיפים לא לבצע את המעבר בעצמכם, אני מציע גם שירות מיגרציה לאתרי וורדפרס.

דיון ותגובות
[  38 תגובות  ]
  • doronily
    doronily 25 אפריל 2016, 15:48

    תודה על המדריך, עבדתי לפיו בהעברה מלוקלי לאחסון. בסוף התהליך, נתקלתי בתקלות מוזרות בלינקים של כל העמודים, Settings > Permalinks > Save Changes

    פתר את העניין.

  • אודי
    אודי 1 דצמבר 2018, 20:30

    הי רועי,
    ז"א שאין צורך להתקין וורדפרס נקי בשרת היעד ואז לדרוס אותו?
    האם לפי שיטתך האתר יופיע ב- cpanel בשרת היעד?

    • רועי יוסף
      רועי יוסף 1 דצמבר 2018, 20:34

      היי אודי,

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

      • אודי בורג
        אודי בורג 30 אפריל 2022, 15:46

        שימוש בשיטה זו ללא התקנת וורדפרס נקי לפני לא מציג את ההתקנה ב-Softaculus מה שמקשה על יצירת STG, שכפול וכו'.

  • מוטי
    מוטי 17 פברואר 2019, 18:53

    מדריך מעולה שהסביר לי סוף סוף ממש מההתחלה ועד הסוף איך מעבירים אתר משרת לשרת,
    כל הכבוד, תודה רבה 🙂

    • רועי יוסף
      רועי יוסף 17 פברואר 2019, 18:58

      שמח שאהבת מוטי 🙂

      • קובי
        קובי 19 נובמבר 2020, 22:37

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

        • רועי יוסף
          רועי יוסף 19 נובמבר 2020, 22:39

          היי קובי, מה ז״א ב״פתיחת השרת החדש״ והיכן אתה מנסה להוסיף את הדומיין בדיוק?

  • רוב
    רוב 4 מרץ 2019, 18:11

    ההסבר הכי מקיף שיש

    • רוב
      רוב 5 מרץ 2019, 9:23

      פעלתי לפי ההסברים שלך ויש לי קובץ ZIP עם כל הנתונים, אבל אחרי שהעליתי אותו ופרסתי אותו חלק מתיקיות כמו ה-plugin לא נפרסו למורת שהן קיימות בתוך ה-ZIP למה זה קורה?

  • עדי בן שלוש
    עדי בן שלוש 21 אפריל 2019, 17:19

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

    • רועי יוסף
      רועי יוסף 21 אפריל 2019, 18:05

      היי עדי,

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

  • רוב
    רוב 12 ספטמבר 2019, 14:28

    איך מונעים בעיות של עלייה לא טובה? העברתי אתר וכל העיצוב השתבש. הכלי של Search Replace DB מביא לי שגיאה:

    The script encountered an error while running an AJAX request. If you are using your hosts file to map a domain try browsing via the IP address directly. If you are still running into problems we recommend trying the CLI script bundled with this package. See the README for details.

    • רוב
      רוב 15 ספטמבר 2019, 13:22

      זה נכון גם לאחסון מסוג של nginx?

      • רועי יוסף
        רועי יוסף 15 ספטמבר 2019, 13:44

        כמובן….

        • רוב
          רוב 15 ספטמבר 2019, 15:29

          תודה,

          לא יודע מה קרה אבל הייתה לי בעיה באתר מבוסס אלמנטור עם oceanwp ו-WPML כל העיצוב נפל, האחסון עשה שחזור וינסה להעביר את האתר.למה בכלל יש בעיות כשמשנים את הכתובת? רק הורדתי המילה new מהשם דרך הכלי של search and replace db,

          אחרי שהורדתי והעליתי את האתר לתיקייה השורש…

          • רועי יוסף
            רועי יוסף 15 ספטמבר 2019, 23:53

            ניסית לבנות מחדש את ה CSS דרך הכלים של אלמנטור? אם אני לא טועה לאלמנטור יש אפשרות לבנות מחדש את ה CSS. לגבי WPML אתה צריך לבדוק את ההגדרות שלו ברמת ה URLS אני מניח…

            • רוב
              רוב 16 ספטמבר 2019, 9:55

              תודה, נסיתי את זה ,האתר בסדר אבל הניהול נשבר.
              מצאתי הסבר על הקוד הזה

              define( 'CONCATENATE_SCRIPTS', false );
              define( 'SCRIPT_DEBUG', true );

              שאומרים להסיר אותו אחרי שהכל מסתדר אבל כשאני מסיר אותו אז הניהול שוב נשבר.
              יש כל מיני הודעות על jquery-migrate.js
              כמו
              JQMIGRATE: 'ready' event is deprecated
              JQMIGRATE: jQuery.browser is deprecated
              וכמה קבצים שחסרים, כדאי לעלות את רק התיקייה של wp-admin מחדש?

        • נסים א.
          נסים א. 4 יוני 2021, 11:41

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

          • רועי יוסף
            רועי יוסף 4 יוני 2021, 16:35

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

  • תמיר
    תמיר 28 מרץ 2020, 17:24

    מאמר מצויין, תודה רבה על ההפשטה של התהליך

  • שרון
    שרון 20 מאי 2020, 18:36

    תענוג

  • אורי
    אורי 14 יוני 2020, 0:38

    היי,
    אני מעוניין להעביר מוצרים מאתר שנבנה ב prestashop לוורדפרס-ווקומרס
    האם זה אפשרי? איך מבצעים את זה?
    ואם אפשר להעביר גם את הSEO

    • אורי
      אורי 14 יוני 2020, 0:40

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

  • סאם
    סאם 15 יוני 2020, 12:09

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

  • רוב
    רוב 16 נובמבר 2020, 7:22

    יש הבדל בין Velvet Blues Update URLs לבין Better Search Replace?
    בפוסט אחר כתבת עליו בשביל המטרה של עדכון כתובות

    • רועי יוסף
      רועי יוסף 16 נובמבר 2020, 11:25

      היי רוב, אין הבדל עקרונית…

      • רוב
        רוב 16 נובמבר 2020, 11:27

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

        • רועי יוסף
          רועי יוסף 16 נובמבר 2020, 11:32

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

  • רוב
    רוב 16 נובמבר 2020, 12:22

    תודה, השתמשתי בדופליקטור ולא הייתי צריך לעדכן כתובות

  • אורה
    אורה 17 נובמבר 2020, 19:35

    הי רועי,
    יש לי קובץ של מסד נתונים שאני עושה import אליו כמו שהסברתי אני מקבלת את השגיאה הבאה:

    ---- Database: `rabanutc_mdj_wp`---- ------------------------------------------------------------
        Table structure for table `wp_commentmeta`--CREATE TABLE
        `wp_commentmeta` (  `meta_id` bigint(20) UNSIGNED NOT
        NULL,  `comment_id` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
        `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
        `meta_value` longtext COLLATE utf8mb4_unicode_520_ci)
        ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci

    יש לך רעיון מה לעשות?
    תודה

  • חיים
    חיים 25 אוגוסט 2021, 18:03

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

  • מירי
    מירי 29 אוגוסט 2021, 21:39

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

    אני מנסה להעביר אתר משרת חי לשרת מקומי על המחשב. הכל עבד מצוין עד שהגעתי להחלפת כתובות. הורדתי את התוסף ועשיתי הכל כפי שרשמת אך אני מקבלת את השגיאה הבאה:
    Fatal error: Out of memory (allocated 249561088) (tried to allocate 61440 bytes)
    ניסיתי לפתור מהאינטרנט אך שום דבר לא עזר, אולי תוכל לעזור לי?

    תודה מראש, מירי

  • רפי
    רפי 1 מאי 2022, 11:50

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

    תודה, רפי

השאירו תגובה

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