
به اشتراک بگذارید
آموزش وردپرس | بلاگ وبداده
انتقال وردپرس بین هاست cPanel و DirectAdmin
- سه ستون انتقال: هر مهاجرت وردپرس شامل سه چیز است؛ فایلها، دیتابیس و ویرایش فایل
wp-config.php. - تفاوت کلیدی دو پنل: مسیر ریشهی سایت در سیپنل و دایرکتادمین یکسان نیست و باید فایلها را در پوشهی درست بگذارید.
- پیشوند نام دیتابیس عوض میشود: چون نامکاربری حساب مقصد فرق دارد، نام دیتابیس و کاربر تغییر میکند و باید در
wp-config.phpاصلاح شود. - سه مسیر ممکن: روش دستی، ابزار رسمی تبدیل دایرکتادمین (سطح مدیر سرور)، یا افزونههایی مثل Duplicator و All-in-One.
- DNS آنی نیست: بعد از انتقال، تغییر نیمسرور دامنه تا ۴۸ ساعت طول میکشد تا همهجا اعمال شود.
در یک نگاه
wp-config.php. حواستان به تفاوت مسیر public_html و تغییر پیشوند نام دیتابیس باشد. بستر هاست سیپنل و وردپرس و پشتیبانی راهاندازی را میتوانید از وبداده بگیرید.انتقال وردپرس بین هاست cPanel و DirectAdmin چیست و چه زمانی لازم است؟
- تعویض شرکت هاستینگ: هاست جدیدی انتخاب کردهاید که کنترلپنلش با هاست قبلی فرق دارد.
- کاهش هزینه یا لایسنس: دایرکتادمین معمولاً لایسنس ارزانتری دارد و بعضی هاستها به آن مهاجرت میکنند.
- ارتقا یا تغییر سرور: از هاست اشتراکی به سرور مجازی یا اختصاصی میروید که پنل دیگری روی آن نصب است.
سه چیز جابهجا میشود، نه بیشتر
wp-content)، دیتابیس MySQL، و فایل wp-config.php که این دو را به هم وصل میکند. اگر این سه را درست منتقل کنید، سایت دقیقاً مثل قبل بالا میآید؛ فرقی نمیکند از سیپنل به دایرکتادمین بروید یا برعکس.تفاوت مسیر ریشهی سایت را جدی بگیرید
/home/user/public_html/ قرار دارند، اما در دایرکتادمین مسیر ریشهی هر دامنه /home/user/domains/domain.com/public_html/ است. هنگام آپلود فایلها حتماً آنها را در پوشهی public_htmlِ درستِ همان دامنه قرار دهید، نه جای دیگر.
پیشنیازها: قبل از شروع اینها را آماده کنید
۱) بکاپ کامل
۲) دسترسی هر دو پنل
۳) ابزارهای کار
چرا بکاپ اینقدر مهم است؟
مراحل مهاجرت سایت بین دو کنترلپنل، گامبهگام
قدم اول: صادر کردن دیتابیس از پنل مبدأ
wp-config.php (مقدار DB_NAME) پیدا کنید و آن را از ستون کناری انتخاب کنید. سپس روی تب «Export» بزنید، حالت «Quick» و فرمت «SQL» را نگه دارید و «Go» را بزنید. یک فایل با پسوند .sql دانلود میشود که کل محتوای سایت شماست.قدم دوم: بستهبندی فایلهای سایت
public_html و در دایرکتادمین domains/domain.com/public_html). کل محتوا را انتخاب و در یک فایل zip فشرده کنید. این آرشیو شامل هستهی وردپرس، قالبها، افزونهها و پوشهی مهم wp-content است.
قدم سوم: ساخت دیتابیس و کاربر در پنل مقصد
پیشوند نام حتماً عوض میشود
newuser_wpdb). چون نامکاربری حساب مقصد با مبدأ فرق دارد، این پیشوند تغییر میکند. پس نام کاملِ پیشونددارِ جدید را باید در wp-config.php بگذارید، نه نامی که در هاست قبلی بود.قدم چهارم: ایمپورت دیتابیس در پنل مقصد
.sql مرحلهی اول را انتخاب و «Go» را بزنید. پس از چند لحظه جدولهای سایت وارد دیتابیس میشوند. اگر دیتابیس حجیم است و با خطای حجم مواجه شدید، راهنمای ایمپورت دیتابیسهای بزرگ در phpMyAdmin کمکتان میکند.قدم پنجم: آپلود و استخراج فایلها در public_html مقصد
public_htmlِ درستِ همان دامنه شوید. اینجا همان جایی است که تفاوت دو پنل اهمیت پیدا میکند: در دایرکتادمین باید داخل domains/domain.com/public_html بروید. فایل zip مرحلهی دوم را آپلود کنید، روی آن راستکلیک کرده و «Extract» را بزنید. دقت کنید فایلها مستقیماً داخل public_html قرار بگیرند، نه در یک زیرپوشه.قدم ششم: ویرایش فایل wp-config.php
wp-config.php را در File Manager پیدا کنید، روی آن راستکلیک و «Edit» بزنید. سه مقدار مربوط به دیتابیس را با اطلاعاتی که در قدم سوم ساختید جایگزین کنید (به پیشوند جدید حساب مقصد دقت کنید):// فایل wp-config.php روی هاست مقصد (DirectAdmin یا cPanel)
// این سه مقدار را با اطلاعات دیتابیسی که تازه ساختید جایگزین کنید
define( 'DB_NAME', 'newuser_wpdb' ); // نام دیتابیس با پیشوند حساب مقصد
define( 'DB_USER', 'newuser_wp' ); // نام کاربر دیتابیس با پیشوند مقصد
define( 'DB_PASSWORD', 'YourStrongPass' );// پسورد همان کاربر
define( 'DB_HOST', 'localhost' ); // در اغلب هاستها localhost درست استPHPمقدار DB_HOST را الکی عوض نکنید
localhost درست کار میکند. فقط در معدودی از هاستها که دیتابیس روی سرور جداست، باید آدرس اختصاصی هاست را بگذارید؛ این آدرس را از پشتیبانی یا مستندات هاست بگیرید.قدم هفتم: بهروزرسانی آدرسهای سایت (در صورت تغییر دامنه)
# بهروزرسانی امن آدرسها با WP-CLI (دادهی سریالایز را درست پردازش میکند)
# اول با dry-run فقط گزارش بگیرید، بدون تغییر واقعی
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --dry-run --skip-columns=guid
# وقتی خروجی درست بود، همان دستور را بدون dry-run و با precise اجرا کنید
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --skip-columns=guid --precise --all-tablesBashچرا REPLACE خام SQL ممنوع است؟
REPLACE ساده در SQL این شمارش را بهروز نمیکند و در نتیجه ویجتها، تنظیمات قالب و بخشی از دادهها خراب میشوند. همیشه از افزونه یا WP-CLI که سریالایز را درست پردازش میکنند استفاده کنید و ستون guid را دست نزنید.قدم هشتم: تغییر DNS و ریست پیوند یکتا
سه روش انتقال بین دو پنل؛ کدام مناسب شماست؟
| معیار | روش دستی (phpMyAdmin + File Manager) | ابزار رسمی تبدیل DirectAdmin | افزونه (Duplicator / All-in-One) |
|---|---|---|---|
| سطح دسترسی لازم | کاربر هاست | مدیر سرور (root) | کاربر هاست |
| سطح مهارت لازم | متوسط | بالا / فنی | مبتدیپسند |
| کنترل روی جزئیات | کامل | کامل (سطح اکانت) | محدودتر |
| مدیریت دادهی سریالایز | دستی (با ابزار search-replace) | خودکار | خودکار هنگام import |
| مناسب برای | یک سایت روی هاست اشتراکی | انتقال انبوه چند اکانت | سرعت و کمترین خطا |
| محدودیت حجم (نسخه رایگان) | بستگی به هاست | ندارد | در دیتابیسهای خیلی بزرگ محدود |
جمعبندی جدول
cpanel_to_da) قدرتمند است اما فقط در سطح مدیر سرور کار میکند و برای کاربر عادی هاست در دسترس نیست. اگر سرعت و کمترین خطا برایتان مهم است، افزونهای مثل Duplicator یا All-in-One کار را ساده میکند؛ فقط حواستان به محدودیت حجم نسخهی رایگان باشد. در هر سه حالت، بکاپگرفتن قبل از شروع واجب است.عیبیابی پس از انتقال و نکات صادقانه
خطای «Error establishing a database connection»
wp-config.php اشتباه است. نام دیتابیس، یوزر و پسورد را با همان پیشوند جدید حساب مقصد دوباره بررسی کنید. راهنمای کامل رفع این مشکل را در مطلب رفع خطای اتصال به دیتابیس نوشتهایم.صفحهی سفید یا بههمریختگی ظاهر سایت
public_htmlِ درست قرار نگرفتهاند، یا آدرسهای قدیمی در دیتابیس مانده، یا نسخهی PHP دو پنل فرق دارد. اول مسیر فایلها را چک کنید، سپس در صورت تغییر دامنه search-replace را کامل انجام دهید و در نهایت نسخهی PHP سازگار با وردپرس (نسخه 8.1 یا بالاتر) را انتخاب کنید.تصاویر نمایش داده نمیشوند
wp-content/uploads کامل آپلود نشده یا آدرس تصاویر هنوز به دامنهی قبلی اشاره میکند. کامل بودن پوشهی uploads را چک کنید و اگر دامنه عوض شده، دوباره search-replace را اجرا کنید.معایب و محدودیتهایی که باید بدانید
public_html یا مجوز فایلها میتواند وقتگیر شود. سوم، اگر دامنه عوض شود و آدرسها با ابزار نادرست تغییر کنند، دادهی سریالایز خراب میشود. چهارم، انتشار DNS آنی نیست و ممکن است تا دو روز کاربران نسخهی قدیمی را ببینند. و در نهایت، تفاوت نسخهی PHP بین دو پنل میتواند خطاهای سازگاری قالب یا افزونه ایجاد کند که باید جداگانه رفع شوند.مرجع رسمی: تغییر آدرسها را با ابزار انجام دهید
میزبانی وردپرس روی هاست وبداده
✅ دیتاسنترهای متنوع در ایران، هلند و آلمان برای انتخاب نزدیکترین لوکیشن به کاربران شما.
✅ کنترلپنل بههمراه phpMyAdmin، File Manager و ابزار بکاپ برای انجام امنِ همین انتقال.
✅ پشتیبانی فنی ۲۴ ساعته برای کمک در مهاجرت، ایمپورت دیتابیس و رفع خطاهای بعد از انتقال.
تجربهی پشتیبانی وبداده
wp-config.php را با نام پیشونددارِ جدید حساب مقصد تطبیق میدهیم، بعد مطمئن میشویم فایلها در پوشهی public_htmlِ درست قرار گرفتهاند و در پایان نسخهی PHP سازگار را انتخاب میکنیم. همین چند قدم ساده، اکثر مشکلات بعد از مهاجرت را برطرف میکند.پرسشهای پرتکرار دربارهی انتقال وردپرس بین سیپنل و دایرکتادمین
آیا با انتقال بین سیپنل و دایرکتادمین اطلاعات سایتم از بین میرود؟
اگر پیش از شروع از فایلها و دیتابیس بکاپ کامل بگیرید، خیر. کل فرایند یعنی «کپی» کردن سایت روی پنل جدید؛ تا وقتی از سالم بودن نسخهی مقصد مطمئن نشدهاید، اکانت مبدأ را دستنخورده نگه دارید تا در صورت هر مشکلی راه بازگشت داشته باشید.
مهمترین تفاوت سیپنل و دایرکتادمین هنگام انتقال چیست؟
مهمترین تفاوت عملی، مسیر ریشهی سایت است. در سیپنل فایلها در public_html اصلی حساب قرار دارند، اما در دایرکتادمین مسیر هر دامنه به شکل domains/domain.com/public_html است. باید فایلها را در پوشهی درستِ همان دامنه آپلود کنید.
چرا باید پیشوند نام دیتابیس را در wp-config.php عوض کنم؟
چون در هر دو پنل نام دیتابیس و کاربر با پیشوند نامکاربری حساب ساخته میشود و نامکاربری حساب مقصد با مبدأ فرق دارد. پس نام دیتابیس و کاربر جدید پیشوند تازهای میگیرند و باید همان مقادیر جدید را در wp-config.php بگذارید.
آیا ابزار رسمی تبدیل cPanel به DirectAdmin برای من کار میکند؟
این ابزار (cpanel_to_da) فقط در سطح مدیر سرور و با دسترسی root کار میکند و بکاپ pkgacct سیپنل را به فرمت دایرکتادمین تبدیل میکند. اگر روی هاست اشتراکی هستید به آن دسترسی ندارید و باید از روش دستی یا افزونه استفاده کنید.
مقدار DB_HOST را در wp-config.php چه بگذارم؟
در بیشتر هاستهای سیپنل و دایرکتادمین مقدار localhost درست است، چون دیتابیس روی همان سرور سایت قرار دارد. فقط در هاستهایی که دیتابیس روی سرور جداست باید آدرس اختصاصی هاست را بگذارید که آن را از پشتیبانی یا مستندات هاست میگیرید.
اگر دامنهام عوض نشود، باز هم باید آدرسها را search-replace کنم؟
خیر. اگر فقط کنترلپنل عوض شده و دامنه ثابت مانده، معمولاً نیازی به تغییر آدرسها نیست. search-replace فقط زمانی لازم است که آدرس یا دامنهی سایت تغییر کرده باشد.
برای عوضکردن آدرسها میتوانم مستقیم در SQL از REPLACE استفاده کنم؟
توصیه نمیشود. وردپرس بخشی از دادهها را سریالایزشده ذخیره میکند و REPLACE خام SQL شمارش کاراکتر آنها را خراب میکند. بهجای آن از افزونهی Better Search Replace یا دستور wp search-replace با فلگ precise و skip-columns=guid استفاده کنید.
بعد از تغییر نیمسرور دامنه، چقدر طول میکشد سایت بالا بیاید؟
انتشار DNS معمولاً بین چند ساعت تا ۴۸ ساعت طول میکشد. در این بازه ممکن است بعضی کاربران هنوز نسخهی قدیمی را ببینند. تا کاملشدن این فرایند صبور باشید و اکانت مبدأ را حذف نکنید.
چرا بعد از انتقال، ظاهر سایت بههم ریخته یا صفحه سفید است؟
معمولاً یا فایلها در پوشهی public_html درست قرار نگرفتهاند، یا آدرسهای قدیمی در دیتابیس مانده، یا نسخهی PHP پنل مقصد ناسازگار است. اول مسیر فایلها را بررسی کنید، بعد در صورت تغییر دامنه search-replace را کامل کنید و نسخهی PHP مناسب (8.1 یا بالاتر) را انتخاب کنید.
جمعبندی و چکلیست نهایی انتقال
چکلیست سریع انتقال
✅ دیتابیس را از phpMyAdmin مبدأ خروجی گرفتم و در پنل مقصد ایمپورت کردم.
✅ در پنل مقصد دیتابیس و کاربر با ALL PRIVILEGES ساختم.
✅ فایلها را داخل public_html درستِ همان دامنه آپلود و استخراج کردم.
✅ سه مقدار دیتابیس را با پیشوند جدید در wp-config.php درست کردم.
✅ در صورت تغییر دامنه، آدرسها را با Better Search Replace یا WP-CLI بهروز کردم (بدون REPLACE خام).
✅ نیمسرور دامنه را تغییر دادم و پیوند یکتا را ذخیره کردم.
✅ خطای دیتابیس، تصاویر و نسخهی PHP را بررسی کردم و بعد اکانت مبدأ را حذف کردم.



