آموزش
آموزش انتقال سایت از هاست سیپنل به لوکالهاست
برای انتقال یک سایت از هاست سیپنل (cPanel) به لوکالهاست، فقط به سه چیز نیاز دارید: یک بکاپ کامل از فایلها، یک خروجی از دیتابیس، و تنظیم دوباره اتصال سایت به دیتابیس و آدرس جدید. کل کار معمولاً بین ۲۰ تا ۶۰ دقیقه زمان میبرد، بسته به حجم سایت.
چند دلیل رایج برای این کار:
- تست افزونه، قالب یا آپدیت بزرگ بدون ریسک روی سایت زنده
- توسعه و عیبیابی بدون نیاز به اینترنت و بدون هزینهی هاست اضافه
- گرفتن نسخهی آزمایشی (staging) قبل از تغییرات مهم
- آموزش و یادگیری روی یک سایت واقعی
این راهنما با فرض یک سایت وردپرسی نوشته شده، چون رایجترین حالت است؛ اما مراحل اصلی (کپی فایلها، ایمپورت دیتابیس، ویرایش فایل تنظیمات) برای جوملا، دروپال، لاراول و سایتهای PHP سفارشی هم یکسان است و فقط نام فایل تنظیمات فرق میکند.
پیشنیازها
قبل از شروع، این موارد را آماده کنید:
| مورد | توضیح |
| دسترسی cPanel | نام کاربری و رمز ورود هاست فعلی |
| سرور لوکال | XAMPP، Laragon یا WAMP (روی ویندوز)؛ MAMP یا Local (روی مک) |
| نسخهی PHP | همنسخه با هاست اصلی (مثلاً ۸.۱ یا ۸.۲) |
| فضای دیسک | حداقل دو برابر حجم سایت، برای فایل زیپ و نسخهی استخراجشده |
| ویرایشگر متن | Notepad++ یا VS Code برای ویرایش فایلهای تنظیمات |
نسخهی PHP را از مسیر cPanel ← Select PHP Version (یا MultiPHP Manager) ببینید و همان را در سرور لوکال انتخاب کنید. اختلاف نسخه رایجترین دلیل خطای صفحهی سفید بعد از انتقال است.
گام ۱: تهیه بکاپ از cPanel
برای انتقال، دو چیز لازم است: فایلهای سایت و دیتابیس.
بکاپ فایلها
- وارد cPanel شوید و File Manager را باز کنید.
- وارد پوشهی public_html (یا پوشهی دامنهی مورد نظر) شوید.
- همهی فایلها را انتخاب کنید (با کلید Ctrl+A؛ فایلهای مخفی مثل .htaccess را هم شامل شود. از Settings گزینهی Show Hidden Files را فعال کنید).
- روی Compress کلیک کنید و فرمت Zip Archive را بزنید.
- بعد از ساخته شدن فایل زیپ، آن را انتخاب و Download کنید.
اگر حجم سایت زیاد است، بهجای File Manager میتوانید از FTP (مثلاً FileZilla) یا گزینهی Backup در cPanel استفاده کنید؛ دانلود از طریق FTP پایدارتر است.
بکاپ دیتابیس
- در صفحهی اصلی cPanel وارد phpMyAdmin شوید.
- از ستون سمت چپ، دیتابیس سایت را انتخاب کنید. اگر نام آن را نمیدانید، در وردپرس داخل فایل wp-config.php مقدار DB_NAME را ببینید.
- از بالای صفحه روی Export بزنید.
- روش Quick و فرمت SQL را انتخاب کنید و روی Go کلیک کنید.
فایل .sql دانلودشده، نسخهی کامل دیتابیس شماست. اگر دیتابیس خیلی بزرگ است (بیش از ۵۰ مگابایت)، روش Custom را انتخاب کنید و فشردهسازی zipped یا gzipped را بزنید تا ایمپورت بعدی راحتتر شود.
نکته: بهجای phpMyAdmin میتوانید از cPanel ← Backup ← Download a MySQL Database Backup هم استفاده کنید؛ نتیجه یکی است.
گام ۲: راهاندازی محیط لوکال
در این آموزش از XAMPP مثال میزنیم؛ در Laragon هم مراحل مشابه است.
- XAMPP را از سایت رسمی دانلود و نصب کنید (نسخهای را بگیرید که PHP آن با هاست شما همخوان است).
- برنامهی XAMPP Control Panel را باز کنید.
- دو سرویس Apache و MySQL را با دکمهی Start روشن کنید.
- در مرورگر آدرس http://localhost را باز کنید؛ اگر صفحهی خوشآمدگویی XAMPP را دیدید، سرور آماده است.
- آدرس http://localhost/phpmyadmin را هم امتحان کنید تا مطمئن شوید پنل دیتابیس باز میشود.
اگر Apache روشن نشد، معمولاً پورت ۸۰ یا ۴۴۳ توسط برنامهی دیگری (مثل Skype یا IIS) اشغال شده است. پورت را در تنظیمات Apache عوض کنید یا برنامهی مزاحم را ببندید.
گام ۳: انتقال فایلها
- در مسیر نصب XAMPP وارد پوشهی htdocs شوید (معمولاً C:\xampp\htdocs). در Laragon این پوشه www نام دارد.
- یک پوشهی جدید با نام دلخواه بسازید، مثلاً mysite.
- فایل زیپ دانلودشده را داخل این پوشه Extract کنید.
- مطمئن شوید فایلهایی مثل php و wp-config.php مستقیماً داخل mysite هستند، نه در یک زیرپوشهی اضافه.
بعد از این مرحله، سایت از آدرس http://localhost/mysite در دسترس خواهد بود؛ اما هنوز به دیتابیس وصل نیست.
گام ۴: ساخت دیتابیس و ایمپورت
- به http://localhost/phpmyadmin بروید.
- از منوی بالا روی Databases کلیک کنید.
- یک نام برای دیتابیس جدید بنویسید (مثلاً mysite_db)، کدگذاری را روی utf8mb4_unicode_ci بگذارید و Create را بزنید.
- دیتابیس تازهساخته را از ستون چپ انتخاب کنید.
- وارد تب Import شوید، روی Choose File بزنید و فایل .sql را انتخاب کنید.
- در پایین صفحه روی Import کلیک کنید و صبر کنید تا پیام موفقیت (سبز رنگ) ظاهر شود.
اگر فایل شما بزرگتر از محدودیت آپلود است و خطای حجم میگیرید، فایل php.ini را (در XAMPP از طریق دکمهی Config کنار Apache) باز کنید و مقادیر زیر را بالاتر ببرید، سپس Apache را Restart کنید:
upload_max_filesize = 256M
post_max_size = 256M
max_execution_time = 600
memory_limit = 512M
گام ۵: ویرایش فایل تنظیمات
فایل wp-config.php را در پوشهی سایت با ویرایشگر متن باز کنید و اطلاعات اتصال به دیتابیس را به مقادیر لوکال تغییر دهید:
define( ‘DB_NAME’, ‘mysite_db’ );
define( ‘DB_USER’, ‘root’ );
define( ‘DB_PASSWORD’, ” );
define( ‘DB_HOST’, ‘localhost’ );
در XAMPP و Laragon بهصورت پیشفرض کاربر root است و رمز عبور ندارد. نام دیتابیس باید دقیقاً همان نامی باشد که در گام قبل ساختید.
برای سایتهای دیگر، فایل تنظیمات این است:
| سیستم | فایل تنظیمات |
| وردپرس | wp-config.php |
| جوملا | configuration.php |
| لاراول | .env |
| دروپال | sites/default/settings.php |
در صورت وجود مقادیر WP_HOME و WP_SITEURL در همین فایل، آنها را حذف یا به آدرس لوکال تغییر دهید. اگر این مقادیر روی دامنهی اصلی باقی بمانند، لوکال شما مدام به سایت زنده ریدایرکت میشود.
گام ۶: تغییر آدرسها در دیتابیس
وردپرس آدرس سایت را داخل دیتابیس هم ذخیره میکند؛ پس بعد از ایمپورت باید آن را به آدرس لوکال عوض کنید. دو روش دارید.
روش اول: ویرایش دستی در phpMyAdmin (سایتهای ساده)
- در phpMyAdmin دیتابیس را باز کنید و جدول wp_options را انتخاب کنید (پیشوند wp_ ممکن است فرق کند).
- دو ردیف siteurl و home را پیدا کنید.
- مقدار هر دو را به http://localhost/mysite تغییر دهید و ذخیره کنید.
این روش برای ورود به پیشخوان کافی است، اما آدرسهای داخل محتوا، تصاویر و تنظیمات قالب را عوض نمیکند.
روش دوم: Search & Replace کامل (توصیهشده)
با ابزار WP-CLI یا افزونهی Better Search Replace میتوانید همهی آدرسهای قدیمی را یکجا جایگزین کنید. افزونهها دادههای serialized را هم درست مدیریت میکنند؛ به همین دلیل نباید با یک find & replace ساده روی فایل .sql این کار را انجام دهید، چون ساختار دادهها خراب میشود.
نمونه دستور WP-CLI:
wp search-replace ‘https://example.com’ ‘http://localhost/mysite’ –all-tables
پیوند یکتا (Permalinks)
بعد از ورود به پیشخوان در آدرس http://localhost/mysite/wp-admin، به تنظیمات ← پیوندهای یکتا بروید و بدون هیچ تغییری روی ذخیره کلیک کنید. این کار قوانین بازنویسی آدرس را دوباره میسازد و جلوی خطای ۴۰۴ در صفحات داخلی را میگیرد.
اگر فایل .htaccess روی لوکال خطا میدهد، آن را به .htaccess.bak تغییر نام دهید تا وردپرس نسخهی جدید و سالم بسازد.
مشکلات رایج و راهحلها
| مشکل | علت محتمل | راهحل |
| Error establishing a database connection | نام دیتابیس، کاربر یا رمز در wp-config.php اشتباه است، یا MySQL روشن نیست | مقادیر را بازبینی کنید و سرویس MySQL را در XAMPP روشن کنید |
| ریدایرکت مداوم به سایت اصلی | siteurl و home هنوز روی دامنهی قدیمیاند | آنها را در wp_options یا با Search & Replace عوض کنید |
| صفحهی سفید | اختلاف نسخهی PHP یا کمبود حافظه | نسخهی PHP را همخوان کنید و WP_DEBUG را روشن کنید تا پیام خطا دیده شود |
| خطای ۴۰۴ در صفحات داخلی | قوانین بازنویسی آدرس بهروز نیستند | پیوندهای یکتا را دوباره ذخیره کنید؛ ماژول mod_rewrite باید فعال باشد |
| تصاویر و CSS بارگذاری نمیشوند | آدرسها هنوز به دامنهی قدیمی اشاره میکنند | Search & Replace کامل انجام دهید |
| خطای حجم در ایمپورت دیتابیس | محدودیت upload_max_filesize | مقادیر php.ini را بالا ببرید یا فایل را فشرده کنید |
| کاراکترهای فارسی بهصورت علامت سؤال | کدگذاری دیتابیس درست نیست | دیتابیس را با utf8mb4 بسازید و فایل SQL را با همان کدگذاری ایمپورت کنید |
برای دیدن جزئیات خطا، در wp-config.php این خط را اضافه کنید و بعد از رفع مشکل حتماً آن را برگردانید:
define( ‘WP_DEBUG’, true );
جمعبندی
انتقال سایت از cPanel به لوکالهاست در شش گام انجام میشود: بکاپ از فایلها و دیتابیس، نصب سرور لوکال، کپی فایلها، ایمپورت دیتابیس، تنظیم فایل پیکربندی و جایگزینی آدرسها. بیشتر خطاها از اختلاف نسخهی PHP، اطلاعات اشتباه دیتابیس یا آدرسهای باقیماندهی دامنهی قدیمی ناشی میشود.
چند توصیهی پایانی:
- قبل از هر تغییر روی سایت زنده، یک بکاپ تازه بگیرید.
- نسخهی لوکال را در موتورهای جستجو ایندکس نکنید و آن را در اینترنت منتشر نکنید.
- اگر قصد دارید تغییرات لوکال را دوباره روی هاست اصلی ببرید، مسیر برعکس (بکاپ از لوکال، آپلود و Search & Replace به دامنهی اصلی) را با همین منطق انجام دهید.
- برای کار حرفهایتر و تکرارشونده میتوانید از افزونههایی مثل Duplicator یا All-in-One WP Migration استفاده کنید که کل مراحل بالا را در یک بسته خودکار میکنند.



