SHET26

حل مشکل وردپرس هنگام تغییر آدرس در بخش تنظیمات

حل مشکل وردپرس هنگام تغییر آدرس در بخش تنظیمات

آدرس سایت رو از بخش تنظیمات وردپرس عوض کردید و حالا سایت بالا نمیاد؟ خبر خوب اینکه هیچ اطلاعاتی از بین نرفته. نوشته‌ها، تصاویر و تنظیمات سایت همگی سر جاشون هستن و فقط وردپرس داره آدرسی رو دنبال می‌کنه که وجود خارجی نداره. کافیه این آدرس رو به مقدار درست برگردونیم.

توی این مقاله چهار روش برای حل این مشکل معرفی می‌کنیم. اگه عجله دارید، مستقیم سراغ روش اول یعنی ویرایش فایل wp-config.php برید؛ سریع‌ترین و کم‌خطرترین راه همونه. روش دوم که کار با دیتابیس و phpMyAdmin هست هم به‌طور کامل توضیح داده شده.

آنچه در این مقاله می‌خوانید

چرا سایت بعد از تغییر آدرس از دسترس خارج می‌شود؟

وردپرس آدرس سایت شما رو داخل دیتابیس ذخیره می‌کنه. وقتی این آدرس رو به چیزی تغییر میدید که دامنه‌اش به هاست شما وصل نیست، وردپرس همه درخواست‌ها رو به همون آدرس جدید هدایت می‌کنه. نتیجه‌اش این میشه که هم سایت و هم پیشخوان از دسترس خارج میشن، چون آدرس مقصد اصلاً وجود نداره.

نکته مهم اینه که تغییر آدرس در تنظیمات وردپرس، دامنه شما رو عوض نمی‌کنه. دامنه در پنل ثبت‌کننده دامنه و هاست تنظیم میشه و بخش تنظیمات وردپرس فقط به وردپرس میگه خودش رو با چه آدرسی بشناسه.

تفاوت siteurl و home در چیست؟

در ادامه با این دو عبارت زیاد روبه‌رو میشید، پس بهتره تفاوتشون رو بدونید:

  • siteurl (نشانی وردپرس): آدرسی که فایل‌های وردپرس در اون نصب شدن.
  • home (نشانی سایت): آدرسی که بازدیدکننده در مرورگر وارد می‌کنه تا به صفحه اصلی برسه.

توی بیشتر سایت‌ها این دو مقدار کاملاً یکسانن. فقط زمانی متفاوت میشن که وردپرس رو در یه پوشه فرعی نصب کرده باشید اما بخواید سایت از آدرس اصلی باز بشه. پس اگه مطمئن نیستید، هر دو رو یکسان وارد کنید.

کدام حالت برای شما پیش آمده است؟

تغییر آدرس بسته به اینکه چه مقداری وارد کرده باشید، چند حالت مختلف ایجاد می‌کنه:

  • سایت و پیشخوان هیچ‌کدوم باز نمیشن: آدرس اشتباه در هر دو فیلد ثبت شده.
  • سایت باز میشه ولی طراحی به هم ریخته: فایل‌های قالب از آدرسی فراخوانی میشن که در دسترس نیست. معمولاً فقط مقدار siteurl اشتباهه.
  • مرورگر پیام حلقه ریدایرکت میده: آدرس ثبت‌شده کاربر رو به خودش برمی‌گردونه. اغلب به دلیل ناهماهنگی بین http و https یا www و بدون www اتفاق می‌افته.
  • سایت باز میشه ولی پیشخوان نه: معمولاً با یکسان کردن مقدار هر دو فیلد حل میشه.

خوشبختانه راه‌حل همه این حالت‌ها یکیه: اصلاح دو مقدار siteurl و home.

قبل از شروع، نسخه پشتیبان بگیرید

در ادامه قراره فایل‌های اصلی وردپرس یا دیتابیس رو ویرایش کنید. قبل از هر کاری از هاست خودتون خروجی بگیرید. در سی‌پنل، گزینه Backup یا Backup Wizard این کار رو انجام میده. برای دیتابیس هم می‌تونید در phpMyAdmin دیتابیس رو انتخاب کنید و از زبانه Export خروجی بگیرید.

این کار بیشتر از دو دقیقه وقت نمی‌گیره، اما اگه وسط کار مشکلی پیش بیاد، همین فایل نجاتتون میده.

روش اول: ویرایش فایل wp-config.php

این سریع‌ترین و امن‌ترین راهه. به دیتابیس دست نمی‌زنید و اگه نتیجه دلخواه نبود، با حذف دو خطی که اضافه کردید همه‌چیز به حالت قبل برمی‌گرده.

پیدا کردن فایل

وارد هاست خودتون بشید و به بخش مدیریت فایل (File Manager) برید. فایل wp-config.php در پوشه اصلی وردپرس قرار داره؛ همون‌جایی که پوشه‌های wp-admin و wp-content رو می‌بینید. اگه با FTP راحت‌ترید، با نرم‌افزاری مثل FileZilla هم می‌تونید به همین فایل دسترسی داشته باشید.

اضافه کردن دو خط کد

فایل رو ویرایش کنید و دو خط زیر رو داخلش قرار بدید. آدرس نمونه رو با آدرس واقعی سایت خودتون جایگزین کنید:

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

این دو خط رو بالاتر از خطی بذارید که نوشته شده /* That's all, stop editing! */ یا در نسخه فارسی «همین! دیگر ویرایش نکنید». بعد از ذخیره فایل، سایت رو توی مرورگر باز کنید. باید به حالت عادی برگشته باشه.

موقع نوشتن آدرس به دو نکته دقت کنید: اسلش انتهای آدرس رو حذف کنید و پروتکل رو درست وارد کنید. اگه سایتتون گواهی SSL داره از https و در غیر این صورت از http استفاده کنید.

یک نکته مهم درباره این روش

وقتی آدرس رو در wp-config.php تعریف می‌کنید، این مقدار بر تنظیمات دیتابیس اولویت پیدا می‌کنه. به همین دلیل فیلدهای «نشانی وردپرس» و «نشانی سایت» در بخش تنظیمات پیشخوان غیرفعال و خاکستری میشن. این رفتار طبیعیه و اتفاقاً یه مزیت حساب میشه، چون دیگه کسی به‌اشتباه اون‌ها رو تغییر نمیده.

اگه می‌خواید این فیلدها دوباره قابل ویرایش بشن، کافیه بعد از حل شدن مشکل، آدرس رو با یکی از روش‌های بعدی در دیتابیس اصلاح کنید و این دو خط رو از wp-config.php بردارید.

روش دوم: اصلاح آدرس از طریق دیتابیس

اگه می‌خواید مشکل رو از ریشه و به‌صورت دائمی حل کنید، باید مقدار رو مستقیم در دیتابیس اصلاح کنید. این روش کمی طولانی‌تره، اما با کمی دقت کاملاً قابل انجامه.

قدم اول: ورود به phpMyAdmin

اول وارد کنترل پنل هاست خودتون بشید. آدرس ورود به سی‌پنل معمولاً به شکل yoursite.com/cpanel هست.

ورود به phpMyAdmin
ورود به phpMyAdmin

اگه هاست شما دایرکت‌ادمین یا پنل دیگه‌ای داره نگران نباشید؛ تقریباً همه کنترل پنل‌ها به phpMyAdmin دسترسی میدن. در دایرکت‌ادمین این گزینه توی بخش مدیریت دیتابیس‌ها (MySQL Management) قرار داره. اگه روی سرور مجازی کار می‌کنید و phpMyAdmin نصب نیست، روش چهارم این مقاله براتون مناسب‌تره.

بعد از ورود به کنترل پنل، روی گزینه phpMyAdmin کلیک کنید تا وارد محیط مدیریت دیتابیس بشید.

گزینه phpMyAdmin
گزینه phpMyAdmin

قدم دوم: پیدا کردن دیتابیس درست

توی ستون سمت چپ، فهرست دیتابیس‌های شما نمایش داده میشه. اگه روی هاستتون چند سایت دارید، انتخاب دیتابیس اشتباه می‌تونه دردسرساز بشه. برای اطمینان، فایل wp-config.php رو باز کنید و دنبال این خط بگردید:

define( 'DB_NAME', 'your_database_name' );

مقداری که داخل این خط نوشته شده، نام دیتابیس سایت شماست. همون رو توی فهرست پیدا کنید و روش کلیک کنید.

پیدا کردن دیتابیس درست
پیدا کردن دیتابیس درست

توی همین فایل، خط $table_prefix رو هم نگاه کنید. مقدار پیش‌فرضش wp_ هست، اما اگه موقع نصب تغییرش داده باشید، نام جدول‌ها هم متفاوت خواهد بود.

قدم سوم: باز کردن جدول options

حالا فهرست جدول‌های دیتابیس رو می‌بینید. از بینشون جدول options رو پیدا کنید و بازش کنید. اگه پیشوند جدول‌هاتون wp_ باشه، نام کامل این جدول wp_options هست.

باز کردن جدول options
باز کردن جدول options

قدم چهارم: اصلاح مقدار siteurl و home

معمولاً این دو ردیف اول فهرست قرار دارن، اما همیشه این‌طور نیست. اگه پیداشون نکردید، به زبانه Search برید، توی فیلد option_name عبارت siteurl رو وارد کنید و جستجو رو اجرا کنید. همین کار رو برای home هم انجام بدید.

حالا روی مقدار مقابل هر ردیف، یعنی ستون option_value، دوبار کلیک کنید تا قابل ویرایش بشه. آدرس درست سایت رو وارد کنید و کلید Enter رو بزنید تا ذخیره بشه. همین مرحله رو برای ردیف دوم هم تکرار کنید.

اصلاح مقدار siteurl و home
اصلاح مقدار siteurl و home

اینجا هم مثل روش قبل، اسلش انتهای آدرس رو نذارید و حواستون به http یا https بودن آدرس باشه. حالا سایت رو باز کنید؛ باید به حالت عادی برگشته باشه.

روش سوم: استفاده از کد موقت در فایل قالب

اگه به دیتابیس دسترسی ندارید اما می‌تونید فایل‌های قالب رو ویرایش کنید، این روش جواب میده. فایل functions.php قالب فعال خودتون رو باز کنید و این دو خط رو به انتهاش اضافه کنید:

update_option( 'siteurl', 'https://example.com' );
update_option( 'home', 'https://example.com' );

فایل رو ذخیره کنید و یه بار سایت رو توی مرورگر باز کنید تا کد اجرا بشه. مقدار جدید در دیتابیس ثبت میشه.

حتماً بعد از باز شدن سایت، این دو خط رو از فایل حذف کنید. اگه اون‌ها رو باقی بذارید، با هر بار بارگذاری صفحه این مقدار دوباره روی دیتابیس نوشته میشه و بعداً نمی‌تونید آدرس سایت رو تغییر بدید.

روش چهارم: استفاده از WP-CLI

اگه به سرور دسترسی SSH دارید و WP-CLI روش نصبه، این کار در چند ثانیه انجام میشه. کافیه وارد پوشه وردپرس بشید و این دستورها رو اجرا کنید:

wp option update home 'https://example.com'
wp option update siteurl 'https://example.com'

این روش بیشتر به کار کسایی میاد که روی سرور مجازی یا سرور اختصاصی کار می‌کنن و به کنترل پنل گرافیکی دسترسی ندارن.

بعد از اصلاح آدرس، این موارد را بررسی کنید

گاهی آدرس اصلاح میشه اما سایت همچنان درست نمایش داده نمیشه. در این صورت این فهرست رو یکی‌یکی بررسی کنید:

  • کش رو پاک کنید. اول کش مرورگر، بعد افزونه کش سایت و در آخر سرویس CDN. خیلی وقت‌ها مشکل حل شده و شما فقط نسخه ذخیره‌شده قدیمی رو می‌بینید. برای اطمینان، سایت رو یه بار در حالت ناشناس باز کنید.
  • پیوندهای یکتا رو دوباره ذخیره کنید. به «تنظیمات > پیوندهای یکتا» برید و بدون تغییر دادن چیزی، روی دکمه ذخیره کلیک کنید. این کار فایل htaccess. رو بازسازی می‌کنه و مشکل خطای ۴۰۴ در صفحات داخلی رو حل می‌کنه.
  • آدرس تصاویر و لینک‌های داخلی رو چک کنید. اگه علاوه بر آدرس سایت، دامنه یا پروتکل رو هم عوض کردید، آدرس قدیمی همچنان داخل محتوای نوشته‌ها باقی مونده. افزونه Better Search Replace این آدرس‌ها رو یکجا اصلاح می‌کنه. قبل از اجرا حتماً گزینه اجرای آزمایشی رو بزنید.
  • مراقب محتوای ترکیبی باشید. اگه سایت رو از http به https منتقل کردید، ممکنه بعضی تصاویر یا فایل‌ها همچنان با http فراخوانی بشن. در این حالت مرورگر قفل امنیتی رو نمایش نمیده و گاهی بخشی از صفحه بارگذاری نمیشه. راه‌حلش همون جایگزینی آدرس‌هاست.
  • فایل htaccess. رو بررسی کنید. اگه قبلاً قانون ریدایرکتی توی این فایل نوشتید که به آدرس قدیمی اشاره می‌کنه، باید اصلاحش کنید.

اگر باز هم مشکل حل نشد

حلقه ریدایرکت ادامه دارد

اول مطمئن بشید مقدار siteurl و home دقیقاً یکسانه. حتی یه حرف اضافه یا تفاوت در www کافیه تا مرورگر بین دو آدرس گیر کنه. بعد تنظیمات SSL هاست و افزونه‌های مربوط به https رو بررسی کنید؛ گاهی افزونه کاربر رو به https می‌فرسته در حالی که آدرس ثبت‌شده http هست.

تفاوت آدرس با www و بدون www

یکی از این دو حالت رو انتخاب کنید و همه‌جا همون رو بنویسید: توی دیتابیس، توی تنظیمات هاست و توی سرچ کنسول. ترکیب این دو حالت، منبع خیلی از خطاهای ریدایرکته.

آدرس در قالب یا افزونه ثابت شده است

بعضی قالب‌ها و افزونه‌ها آدرس سایت رو توی تنظیمات خودشون ذخیره می‌کنن. اگه بعد از اصلاح همه‌چیز باز هم بخشی از سایت به آدرس قدیمی اشاره می‌کنه، تنظیمات قالب و افزونه‌های اصلی مثل صفحه‌سازها رو هم بررسی کنید.

سایت شما چندسایته (مالتی‌سایت) است

توی نصب‌های چندسایته، آدرس‌ها در جدول‌های جداگانه‌ای هم ذخیره میشن و روش‌های این مقاله به‌تنهایی کافی نیست. در این حالت پیشنهاد می‌کنیم قبل از هر تغییری حتماً نسخه پشتیبان کامل بگیرید و اگه تجربه کافی ندارید، کار رو به یه متخصص بسپارید.

چطور دوباره دچار این مشکل نشویم؟

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

یه راه ساده برای پیشگیری هم وجود داره: همون دو خط WP_HOME و WP_SITEURL رو توی فایل wp-config.php قرار بدید. با این کار فیلدهای آدرس در پیشخوان قفل میشن و دیگه کسی نمی‌تونه به‌اشتباه تغییرشون بده.

سؤالات متداول

آیا با این اتفاق اطلاعات سایتم از بین می‌رود؟

نه. نوشته‌ها، برگه‌ها، تصاویر و تنظیمات همگی توی دیتابیس و هاست شما باقی موندن. فقط آدرسی که وردپرس دنبال می‌کنه اشتباهه و با اصلاحش، همه‌چیز به حالت قبل برمی‌گرده.

کدام روش را انتخاب کنم؟

اگه به هاست دسترسی دارید و می‌خواید سریع سایت رو برگردونید، روش اول بهترین انتخابه. اگه می‌خواید مقدار به‌شکل دائمی در دیتابیس اصلاح بشه، سراغ روش دوم برید. روش سوم و چهارم برای شرایط خاص هستن.

چرا فیلد آدرس در تنظیمات غیرفعال شده است؟

چون آدرس در فایل wp-config.php تعریف شده و همون مقدار اولویت داره. اگه می‌خواید دوباره فعال بشه، اون دو خط رو از فایل حذف کنید.

آیا siteurl و home باید حتماً یکسان باشند؟

توی بیشتر سایت‌ها بله. فقط در حالتی که فایل‌های وردپرس رو در یه پوشه فرعی نصب کرده باشید و بخواید سایت از آدرس اصلی باز بشه، این دو متفاوت میشن.

به هاست دسترسی ندارم، چه کنم؟

در این صورت راهی جز تماس با پشتیبانی هاست ندارید. توضیح بدید که آدرس سایت در تنظیمات وردپرس اشتباه ثبت شده و ازشون بخواید مقدار siteurl و home رو در جدول options دیتابیس اصلاح کنن. این درخواست برای تیم‌های پشتیبانی کاملاً آشناست.

جمع‌بندی

تغییر اشتباهی آدرس سایت در نگاه اول ترسناکه، اما در عمل یکی از ساده‌ترین مشکلات وردپرس حساب میشه. کل ماجرا به دو مقدار در دیتابیس برمی‌گرده و با اضافه کردن دو خط به فایل wp-config.php یا اصلاح همون دو ردیف در جدول options حل میشه.

بعد از برگشتن سایت، فراموش نکنید کش رو پاک کنید و پیوندهای یکتا رو یه بار ذخیره کنید. اگه توی هر مرحله به مشکل خوردید، در بخش دیدگاه‌ها بنویسید؛ پاسخگوی شما هستیم.

نظر شما در این مورد چیه؟

  1. U319303۱۵ بهمن ۱۴۰۲

    من بعد از صفحه اصلی سایت یه عبارت نامفهوم اومده! (?v=86b00ba32b0c)
    از کجا میتونم درستش کنم؟!

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسدر حال حاضر آفلاین هستیم. لطفاً پیام بگذارید تا در اولین فرصت پاسخ دهیم.آفلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.