آموزش تغییر دامنه وردپرس بعد از تغییر دامنه هاست

وقتی دامنه‌ی اصلی هاست را عوض می‌کنید (از ناحیه‌ی کاربری آپ‌وب ← جزئیات هاست ← «تغییر دامنه‌ی هاست»)، فقط دامنه‌ای که هاست با آن شناخته می‌شود عوض می‌شود. فایل‌ها، دیتابیس‌ها و ایمیل‌ها سر جایشان می‌مانند؛ اما وردپرس آدرس سایت را داخل دیتابیس خودش نگه می‌دارد و تا آن را عوض نکنید، سایت شما را به دامنه‌ی قبلی می‌فرستد یا ظاهرش به هم می‌ریزد. در این آموزش قدم‌به‌قدم آدرس وردپرس را به دامنه‌ی جدید منتقل می‌کنیم.

پیش از شروع

  • بکاپ بگیرید: از cPanel ← Backup یک نسخه‌ی کامل (یا دست‌کم از دیتابیس و پوشه‌ی public_html) بگیرید.
  • DNS دامنه‌ی جدید: نیم‌سرورهای (Nameserver) دامنه‌ی جدید باید روی نیم‌سرورهای هاست شما تنظیم شده باشد. نیم‌سرورها در صفحه‌ی جزئیات هاست در ناحیه‌ی کاربری نوشته شده است. اعمال تغییر نیم‌سرور ممکن است تا چند ساعت طول بکشد.
  • SSL: بعد از تغییر دامنه و اعمال DNS، گواهی SSL رایگان دامنه‌ی جدید معمولاً خودکار صادر می‌شود. اگر بعد از چند ساعت سایت با https باز نشد، از cPanel ← SSL/TLS Status گزینه‌ی Run AutoSSL را بزنید یا تیکت بفرستید.

هاست مخصوص وردپرس با منابع اختصاصی — پلن‌های هاست وردپرس

روش ۱: از پیشخوان وردپرس (ساده‌ترین روش)

اگر هنوز به پیشخوان وردپرس دسترسی دارید (مثلاً پیش از تغییر دامنه):

  1. وارد پیشخوان شوید و به تنظیمات ← همگانی (Settings ← General) بروید.
  2. در دو فیلد نشانی وردپرس (URL) و نشانی سایت (URL)، دامنه‌ی جدید را با https بنویسید؛ مثلاً https://newdomain.com
  3. ذخیره کنید. وردپرس شما را از حساب خارج می‌کند؛ از این به بعد با دامنه‌ی جدید وارد شوید: https://newdomain.com/wp-admin

روش ۲: از فایل wp-config.php (اگر به پیشخوان دسترسی ندارید)

اگر بعد از تغییر دامنه، پیشخوان باز نمی‌شود یا شما را به دامنه‌ی قبلی می‌برد، از cPanel ← File Manager فایل public_html/wp-config.php را باز کنید و درست بالای خط /* That's all, stop editing! */ این دو خط را اضافه کنید:

define('WP_HOME', 'https://newdomain.com');
define('WP_SITEURL', 'https://newdomain.com');

حالا وارد پیشخوان شوید. بعد از انجام روش ۳ (جایگزینی آدرس‌ها) می‌توانید این دو خط را نگه دارید یا پاک کنید؛ اگر پاک کردید، اول از روش ۱ مطمئن شوید که آدرس در تنظیمات همگانی درست است.

روش ۳: جایگزینی آدرس قدیمی در همه‌ی مطالب (ضروری)

روش‌های ۱ و ۲ فقط آدرس اصلی سایت را عوض می‌کنند. لینک‌های داخل نوشته‌ها، برگه‌ها، تصاویر و تنظیمات قالب و صفحه‌سازها (المنتور و…) هنوز به دامنه‌ی قبلی اشاره می‌کنند. برای جایگزینی همه‌ی آن‌ها:

با افزونه‌ی Better Search Replace

  1. افزونه‌ی Better Search Replace را نصب و فعال کنید (ابزارها ← Better Search Replace).
  2. در Search for بنویسید: https://olddomain.com و در Replace with: https://newdomain.com
  3. همه‌ی جدول‌ها را انتخاب کنید و اول با تیک Run as dry run اجرا کنید تا تعداد تغییرات را ببینید؛ بعد تیک را بردارید و دوباره اجرا کنید.
  4. اگر قبلاً سایت با http یا با www هم باز می‌شد، همین کار را برای http://olddomain.com و https://www.olddomain.com هم تکرار کنید.

این افزونه داده‌های «سریال‌شده» (serialized) وردپرس را درست به‌روز می‌کند؛ برای همین آدرس را با دستور ساده‌ی REPLACE در phpMyAdmin عوض نکنید، چون تنظیمات قالب و افزونه‌ها خراب می‌شود.

با WP-CLI (برای کاربران حرفه‌ای)

اگر در cPanel به Terminal دسترسی دارید، در پوشه‌ی public_html:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --dry-run
wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables
wp cache flush

بعد از تغییر دامنه

  • پیوندهای یکتا: به تنظیمات ← پیوندهای یکتا بروید و یک بار «ذخیره» را بزنید.
  • کش: کش افزونه‌هایی مثل LiteSpeed Cache یا WP Rocket و کش مرورگر را پاک کنید. اگر از المنتور استفاده می‌کنید: المنتور ← ابزارها ← بازسازی فایل‌ها و داده‌ها.
  • ریدایرکت دامنه‌ی قبلی: برای حفظ رتبه در گوگل، اگر دامنه‌ی قبلی هنوز در اختیار شماست، آن را با یک ریدایرکت ۳۰۱ به دامنه‌ی جدید بفرستید (مثلاً دامنه‌ی قبلی را روی هاست پارک کنید و در فایل .htaccess ریدایرکت بگذارید).
  • گوگل سرچ کنسول: دامنه‌ی جدید را اضافه کنید و از ابزار Change of Address برای اعلام جابه‌جایی استفاده کنید؛ نقشه‌ی سایت جدید را هم ثبت کنید.
  • ایمیل‌ها: اگر روی هاست ایمیل با دامنه‌ی قبلی داشتید، حساب‌های ایمیل دامنه‌ی جدید را از cPanel بسازید و تنظیمات برنامه‌های ایمیل را به‌روز کنید.

ریدایرکت ۳۰۱ دامنه‌ی قبلی (نمونه)

اگر دامنه‌ی قبلی به‌صورت پارک روی همین هاست است، این خطوط را بالای فایل public_html/.htaccess اضافه کنید:

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

سایت غیر وردپرسی دارید؟

در اسکریپت‌های دیگر (جوملا، پرستاشاپ، لاراول، اسکریپت‌های اختصاصی و…) هم آدرس سایت معمولاً در فایل تنظیمات (مثل .env، configuration.php یا config.php) یا در دیتابیس ذخیره شده است و باید آن را به دامنه‌ی جدید تغییر دهید. اگر مطمئن نیستید، تیکت پشتیبانی بفرستید یا از سرویس رفع مشکلات سایت کمک بگیرید.