انتقال سایت وردپرسی به هاست یا سرور جدید، اگر بیبرنامه انجام شود، میتواند به ساعتها قطعی، لینکهای خراب و ایمیلهای گمشده منجر شود. اما با یک روند منظم، انتقال تقریباً بدون قطعی انجام میشود. در این راهنما سه روش انتقال وردپرس به هاست جدید را توضیح میدهیم: با ابزار انتقال cPanel، با افزونه و بهصورت دستی؛ و نکات DNS، SSL و بررسی پس از انتقال را مرور میکنیم.
فهرست مطالب
پیش از انتقال
- بکاپ کامل از فایلها و دیتابیس بگیرید و آن را خارج از هاست فعلی نگه دارید؛ روشها در بکاپ وردپرس.
- TTL رکوردهای DNS را کاهش دهید: یک روز پیش از انتقال، TTL رکورد A دامنه را به ۳۰۰ ثانیه برسانید تا تغییر نهایی سریع اعمال شود. توضیح در DNS چیست.
- ایمیلها را فراموش نکنید: اگر ایمیل دامنه روی هاست فعلی است، برای انتقال صندوقها یا رکوردهای MX برنامه داشته باشید.
- نسخه PHP و محیط هاست جدید را با هاست فعلی هماهنگ کنید تا سایت پس از انتقال با خطای ناسازگاری روبهرو نشود.
- زمان کمترافیک را برای مرحله نهایی انتخاب کنید و در صورت امکان، در آن مدت محتوای جدید منتشر نکنید و سفارش ثبت نشود.
انتخاب روش انتقال
| روش | مناسب برای | مزیت |
|---|---|---|
| انتقال کامل اکانت cPanel | جابهجایی از هاست cPanel به هاست cPanel | فایلها، دیتابیسها، ایمیلها و تنظیمات یکجا |
| افزونه انتقال | سایتهای کوچک و متوسط | ساده و بدون نیاز به دانش فنی |
| دستی (فایل و دیتابیس) | سایتهای بزرگ، انتقال به VPS | کنترل کامل و بدون محدودیت حجم |
بسیاری از ارائهدهندگان، انتقال را برای مشتریان جدید انجام میدهند؛ پیش از شروع از پشتیبانی هاست جدید بپرسید.
روش ۱: انتقال کامل اکانت cPanel
- در cPanel هاست فعلی، از بخش Backup یک «Full Account Backup» بگیرید و فایل آن را دانلود کنید.
- فایل را در اختیار پشتیبانی هاست جدید قرار دهید تا با ابزار بازیابی WHM آن را بازگردانند؛ یا اگر دسترسی دارید، از ابزار انتقال cPanel استفاده کنید.
- پس از بازیابی، فایلها، دیتابیسها، ایمیلها و تنظیمات DNS همانطور که بودند منتقل شدهاند.
این سادهترین روش است، چون نام کاربر دیتابیس و تنظیمات wp-config معمولاً بدون تغییر کار میکنند. راهنمای پنل در آموزش cPanel.
روش ۲: با افزونه انتقال
افزونههایی مثل Duplicator یا All-in-One WP Migration کل سایت را در یک بسته خروجی میگیرند و در مقصد بازمیگردانند:
- در سایت فعلی، بسته کامل (فایلها و دیتابیس) بسازید و دانلود کنید.
- در هاست جدید، یک وردپرس خام یا اسکریپت نصب افزونه را آماده کنید.
- بسته را درونریزی کنید؛ افزونه آدرسها را در صورت تغییر دامنه جایگزین میکند.
محدودیت حجم آپلود هاست و نسخه رایگان افزونهها برای سایتهای بزرگ دردسرساز است؛ در این حالت روش دستی مطمئنتر است.
روش ۳: انتقال دستی
گام ۱: خروجی فایلها و دیتابیس روی سرور فعلی (یا از File Manager و phpMyAdmin در cPanel):
cd /path/to/site
tar -czf ~/site-files.tar.gz .
mysqldump --single-transaction --default-character-set=utf8mb4 -u USER -p DBNAME | gzip > ~/site-db.sql.gz
گام ۲: انتقال به سرور جدید، مستقیم بین دو سرور:
rsync -avz ~/site-files.tar.gz ~/site-db.sql.gz user@NEW_SERVER:~/
گام ۳: بازگردانی در مقصد: پوشه سایت را بسازید، فایلها را باز کنید، یک دیتابیس و کاربر جدید بسازید و دیتابیس را وارد کنید:
tar -xzf ~/site-files.tar.gz -C /var/www/example.com
gunzip < ~/site-db.sql.gz | mysql -u NEWUSER -p NEWDB
گام ۴: بهروزرسانی wp-config.php با نام دیتابیس، کاربر و رمز جدید. اگر این مرحله درست انجام نشود، خطای Error establishing a database connection میبینید.
گام ۵: مالکیت و دسترسی فایلها را برای کاربر وبسرور تنظیم کنید؛ توضیح در دسترسی فایلها در لینوکس.
اگر دامنه تغییر کرده: آدرسها را با WP-CLI جایگزین کنید؛ این ابزار دادههای سریالیشده را هم درست تغییر میدهد، برخلاف جایگزینی دستی در SQL که آنها را خراب میکند:
wp search-replace 'https://old.example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'https://old.example.com' 'https://example.com' --all-tables
برای انتقال دیتابیسهای بزرگ، نکات بیشتر در بکاپ و انتقال دیتابیس.
تست پیش از تغییر DNS
پیش از اینکه کاربران به سرور جدید هدایت شوند، سایت را روی آن تست کنید. فایل hosts کامپیوتر خودتان را ویرایش کنید تا دامنه فقط برای شما به IP جدید اشاره کند:
203.0.113.20 example.com www.example.com
در ویندوز این فایل در C:\Windows\System32\drivers\etc\hosts و در لینوکس و مک در /etc/hosts است. سپس صفحه اصلی، چند نوشته، فرمها، ورود به پیشخوان، سبد خرید و پرداخت را بررسی کنید. پس از تست، خط اضافهشده را حذف کنید.
تغییر DNS با کمترین قطعی
- در زمان کمترافیک، آخرین تغییرات دیتابیس (سفارشها و دیدگاههای جدید) را دوباره منتقل کنید؛ برای سایتهای فروشگاهی، سایت قدیمی را در حالت نگهداری قرار دهید تا داده جدیدی در آن ثبت نشود.
- رکورد A (یا NS) دامنه را به سرور جدید تغییر دهید.
- سایت قدیمی را چند روز نگه دارید؛ برخی کاربران تا پایان TTL هنوز به آن هدایت میشوند.
پس از انتقال
- گواهی SSL را روی هاست جدید فعال کنید؛ راهنما در SSL چیست.
- پیوندهای یکتا را یک بار از تنظیمات ذخیره کنید تا قوانین بازنویسی ساخته شوند.
- کش افزونه و CDN را پاک کنید.
- کرونجابها، ارسال ایمیل سایت و اتصال درگاه پرداخت را بررسی کنید؛ برخی درگاهها به IP سرور حساساند.
- در Google Search Console بررسی کنید خطای خزش جدیدی ایجاد نشده باشد.
- بکاپ خودکار را روی هاست جدید فعال کنید.
خطاهای رایج
- خطای اتصال به دیتابیس: اطلاعات wp-config.php یا پیشوند جدول اشتباه است.
- همه صفحات به جز صفحه اصلی ۴۰۴ میدهند: قوانین بازنویسی ساخته نشده؛ پیوندهای یکتا را ذخیره کنید یا پیکربندی Nginx را بررسی کنید.
- تصاویر نمایش داده نمیشوند: پوشه uploads کامل منتقل نشده یا آدرسها هنوز به دامنه قدیمی اشاره میکنند.
- کاراکترهای فارسی به هم ریختهاند: Character Set دیتابیس در خروجی یا ورودی اشتباه بوده؛ با utf8mb4 دوباره منتقل کنید.
- خطای ۵۰۰: نسخه PHP یا دسترسی فایلها؛ راهنما در رفع خطای ۵۰۰.
سوالات متداول
آیا انتقال هاست روی سئو اثر دارد؟
اگر آدرسها تغییر نکنند و قطعی کوتاه باشد، اثر منفی ندارد. اگر هاست جدید سریعتر باشد، حتی ممکن است بهبود هم ایجاد کند.
انتقال وردپرس چقدر زمان میبرد؟
برای سایتهای کوچک، کمتر از یک ساعت کار و تا چند ساعت برای اعمال کامل DNS. سایتهای بزرگ بسته به حجم فایلها و دیتابیس بیشتر طول میکشند.
ایمیلهای دامنه هنگام انتقال چه میشوند؟
اگر ایمیل روی هاست است، باید صندوقها را منتقل و رکوردهای MX را تنظیم کنید. در انتقال کامل اکانت cPanel، ایمیلها هم منتقل میشوند. راهنمای ایمیل در ایمیل سازمانی.
میتوانم همزمان دامنه را هم تغییر دهم؟
بله، اما آدرسها را با search-replace جایگزین و از دامنه قدیمی به جدید ریدایرکت ۳۰۱ بگذارید و تغییر دامنه را در Search Console اعلام کنید.
انتقال به هاست سریعتر
برای انتقال سایت وردپرسی به هاست یا سرور مجازی تراست هاست، از راهنمایی کارشناسان پشتیبانی استفاده کنید.