انتقال وردپرس معمولاً به یکی از دو دلیل انجام میشود: هاست قبلی کند یا گران شده است، یا نام برند و دامنه عوض شده است. در هر دو حالت ترس اصلی یکی است: سایت چند روز از دسترس خارج شود یا رتبهای که سالها ساخته شده از بین برود.
هر دو قابلپیشگیریاند، به شرطی که مرحلهها به ترتیب درست انجام شوند و نیمسرور دامنه آخرین کاری باشد که عوض میشود.
انتقال وردپرس چند مرحله دارد؟#
پنج مرحله: پشتیبان کامل، انتقال فایلها و دیتابیس، آزمایش پنهان روی هاست تازه، تغییر نیمسرور و اگر دامنه عوض شده، ریدایرکت دائمی.
بیشتر خرابیها از این میآید که نیمسرور زودتر از آزمایش عوض شود. در آن حالت کاربران سایت نیمهکاره را میبینند و شما زیر فشار باید مشکل را پیدا کنید.
قبل از انتقال چه کارهایی لازم است؟#
یک پشتیبان کامل بیرون از هر دو هاست و فهرستی از چیزهایی که خارج از وردپرس تنظیم شدهاند.
- پشتیبان کامل: همهی فایلهای سایت و یک خروجی از دیتابیس. روش خودکارش در بکآپ خودکار دیتابیس روی سیپنل آمده است.
- صندوقهای ایمیل: اگر ایمیل دامنه روی همان هاست است، باید روی هاست تازه هم ساخته شود؛ وگرنه بعد از تغییر نیمسرور ایمیلها گم میشوند.
- کرونجابها: دستورهای بخش Cron Jobs سیپنل را یادداشت کنید.
- نسخهی PHP و محدودیتها: نسخهی PHP هاست تازه را همسطح یا جدیدتر از هاست قبلی بگذارید.
- TTL: TTL مدتی است که سرورهای دیگر اطلاعات دامنه را در حافظه نگه میدارند. اگر رکوردهای دامنه را خودتان مدیریت میکنید، یکی دو روز قبل از انتقال آن را کم کنید تا تغییر سریعتر پخش شود.
فایلها و دیتابیس را چطور منتقل کنیم؟#
سه راه دارد: سرویس انتقال رایگان هاست تازه، انتقال دستی در سیپنل یا افزونهی انتقال. اگر هاست تازه انتقال را خودش انجام میدهد، سادهترین راه همین است؛ فقط نتیجه را با مرحلهی آزمایش بسنجید.
برای انتقال دستی:
- در File Manager هاست قبلی، محتویات
public_htmlرا با گزینهی Compress به یک فایل zip تبدیل کنید و دانلود کنید. - در phpMyAdmin هاست قبلی، دیتابیس را انتخاب کنید و از سربرگ Export خروجی SQL بگیرید.
- در هاست تازه دیتابیس و کاربر بسازید و کاربر را به دیتابیس وصل کنید؛ همان کاری که در نصب وردپرس روی هاست سیپنل انجام میشود.
- فایل zip را در
public_htmlهاست تازه بارگذاری و Extract کنید. - در phpMyAdmin هاست تازه، از سربرگ Import فایل SQL را وارد کنید. اگر دیتابیس بزرگتر از سقف بارگذاری است، از پشتیبانی هاست بخواهید آن را وارد کند.
- در
wp-config.phpاطلاعات دیتابیس تازه را بنویسید.
define( 'DB_NAME', 'newuser_wpdb' );
define( 'DB_USER', 'newuser_wpuser' );
define( 'DB_PASSWORD', 'CHANGE_ME' );
define( 'DB_HOST', 'localhost' );مقدار
$table_prefixدر همین فایل را دست نزنید. باید دقیقاً با پیشوند جدولهایی که وارد کردهاید یکی باشد، وگرنه وردپرس صفحهی نصب تازه نشان میدهد.
چطور سایت را پیش از تغییر نیمسرور آزمایش کنیم؟#
با فایل hosts رایانهی خودتان، که دامنه را فقط برای شما به سرور تازه میبرد. فایل hosts فایلی در سیستمعامل است که پیش از پرسیدن از سرورهای نام دامنه خوانده میشود.
- نشانی IP هاست تازه را از سیپنل همان هاست پیدا کنید.
- در ویندوز فایل
C:\Windows\System32\drivers\etc\hostsرا با دسترسی مدیر در ویرایشگر متن باز کنید. - یک خط به شکل
203.0.113.10 example.com www.example.comاضافه کنید؛ IP و دامنه را با مقدار واقعی عوض کنید. - مرورگر را کامل ببندید و سایت را باز کنید. حالا فقط شما نسخهی هاست تازه را میبینید.
- صفحهی اصلی، چند نوشته، ورود به پیشخوان، فرم تماس و اگر فروشگاه دارید سبد خرید را امتحان کنید.
- بعد از آزمایش، آن خط را پاک کنید.
در این مرحله ممکن است مرورگر دربارهی گواهی هشدار بدهد، چون گواهی رایگان هاست تازه تا وقتی دامنه به آن اشاره نکند صادر نمیشود. این طبیعی است. اگر صفحهی سفید یا خطای دیتابیس دیدید، رفع خطاهای رایج وردپرس کمک میکند.
اگر دامنه عوض میشود چه کارهای دیگری لازم است؟#
سه کار اضافه: جایگزینی نشانی در دیتابیس، ریدایرکت ۳۰۱ از دامنهی قدیم و اعلام تغییر در سرچ کنسول.
جایگزینی نشانی. دادهی سریالی قالبی است که PHP با آن آرایهها را به متن تبدیل میکند و طول هر متن را هم در آن ثبت میکند. به همین دلیل نشانی را با دستور REPLACE مستقیم در SQL عوض نکنید؛ از افزونهای استفاده کنید که جایگزینی با پشتیبانی از دادهی سریالی انجام میدهد. اگر هاست دسترسی ترمینال و WP-CLI دارد (اختیاری)، این دستور همان کار را میکند؛ اول با --dry-run ببینید چه چیزی تغییر میکند:
wp search-replace 'https://old-example.com' 'https://new-example.com' --all-tables --dry-run
wp search-replace 'https://old-example.com' 'https://new-example.com' --all-tablesریدایرکت دائمی. دامنهی قدیم را روی هاستی نگه دارید و این قاعده را در .htaccess آن بگذارید تا هر نشانی قدیمی به همان صفحه در دامنهی تازه برود:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-example\.com$ [NC]
RewriteRule ^(.*)$ https://new-example.com/$1 [L,R=301]سرچ کنسول. دامنهی تازه را در سرچ کنسول اضافه و تأیید کنید، از ابزار تغییر نشانی (Change of Address) در ویژگی دامنهی قدیم استفاده کنید و نقشهی سایت تازه را ثبت کنید. بقیهی نکتههای نشانی و canonical را در سئوی فنی وردپرس ببینید.
بعد از انتقال چه چیزهایی را بررسی کنیم؟#
شش مورد که بیرون از محتوای وردپرساند و معمولاً فراموش میشوند: پیوندهای یکتا، گواهی، ایمیل، کرون، کش و سرویسهای بیرونی.
| مورد | چه چیزی را ببینید |
|---|---|
| پیوندهای یکتا | در تنظیمات پیوندهای یکتا یک بار ذخیره را بزنید |
| گواهی SSL | بعد از تغییر نیمسرور، صادرشدن گواهی را در SSL/TLS Status ببینید |
| ایمیل | یک فرم تماس و ایمیل بازیابی رمز را امتحان کنید |
| کرونجاب | دستورها را روی هاست تازه دوباره بسازید |
| کش | کش افزونه و کش هاست را پاک کنید |
| سرویسهای بیرونی | اتصال درگاه پرداخت یا سرویس هوش مصنوعی را از سرور تازه امتحان کنید |
مورد آخر را دستکم نگیرید. اگر سایت چتبات یا افزونهی هوش مصنوعی دارد، ممکن است سرور تازه نتواند به آن سرویس وصل شود؛ نکتههایش در چتبات پشتیبانی سایت وردپرسی آمده است.
انتقال وردپرس به کجا میرود#
جهت کلی روشن است: هاستها انتقال رایگان، کپی یککلیکی و محیط آزمایشی را به بخش عادی سرویس تبدیل کردهاند و ابزارهای اعلام تغییر دامنه در موتورهای جستجو جاافتادهاند. پیچیدگی اصلی دیگر فنی نیست؛ ترتیب کار و فراموشنکردن چیزهای بیرون از وردپرس است.
برای آمادهبودن:
- نشانی دامنه را در کد قالب یا افزونهی شخصی ننویسید؛ از توابع وردپرس برای ساختن نشانی استفاده کنید.
- فهرستی از تنظیمات بیرون از وردپرس، مثل ایمیل، کرون و رکوردهای دامنه، نگه دارید.
- بازگرداندن پشتیبان را هر چند ماه یک بار روی یک زیردامنه امتحان کنید؛ این همان تمرین انتقال است.
خلاصه#
- ترتیب: پشتیبان، انتقال، آزمایش پنهان، تغییر نیمسرور، ریدایرکت.
- پیشوند جدول در
wp-config.phpباید با دیتابیس واردشده یکی باشد. - سایت را با فایل hosts آزمایش کنید، پیش از آنکه کاربران ببینند.
- در تغییر دامنه، نشانیها را با ابزار آگاه از دادهی سریالی عوض کنید.
- ریدایرکت ۳۰۱ دامنهی قدیم را دستکم یک سال نگه دارید.