وقتی یک مرورگر یا موتور جستجو برای دریافت یک آدرس اینترنتی درخواست ارسال میکند، سرور در پاسخ یک کد وضعیت HTTP برمیگرداند. این کد مشخص میکند درخواست با چه نتیجهای مواجه شده است؛ برای مثال، آیا محتوا با موفقیت ارسال شده، صفحه پیدا نشده یا آدرس موردنظر به محل دیگری منتقل شده است.
کدهای وضعیت ۳۰۰ تا ۳۹۹ مربوط به وضعیتهای Redirection یا تغییر مسیر هستند. بنابراین اصطلاح «ارورهای 300» کمی گمراهکننده است؛ زیرا تمام کدهای این محدوده الزاماً خطا محسوب نمیشوند.
برای نمونه، کد 301 به معنای انتقال دائمی یک آدرس است و در بسیاری از سایتها کاملاً طبیعی و حتی ضروری است. در مقابل، ایجاد زنجیرههای طولانی ریدایرکت، حلقههای ریدایرکت یا پیکربندی اشتباه میتواند باعث ایجاد مشکل برای کاربر، خزندههای موتورهای جستجو و عملکرد سایت شود.
نکته مهم: هر کد وضعیت ۳۰۰ یک «خطا» نیست. بخش مهمی از این کدها برای هدایت صحیح درخواستها به یک آدرس دیگر استفاده میشوند.
کدهای وضعیت HTTP چگونه کار میکنند؟
فرض کنید کاربر آدرس یک فروشگاه را در مرورگر وارد میکند و سرور به جای نمایش مستقیم محتوا، اعلام میکند که این آدرس به مکان دیگری منتقل شده است. مرورگر این پاسخ را دریافت میکند و در صورت نیاز درخواست جدیدی برای آدرس مقصد ارسال میکند.
بهطور کلی کدهای HTTP در پنج گروه قرار میگیرند:
| محدوده کد | مفهوم کلی |
|---|---|
| 100 تا 199 | پاسخهای اطلاعاتی |
| 200 تا 299 | درخواست موفق |
| 300 تا 399 | تغییر مسیر |
| 400 تا 499 | خطاهای سمت کاربر یا درخواست |
| 500 تا 599 | خطاهای سمت سرور |
بنابراین وقتی در ابزارهای بررسی سایت با عباراتی مانند 301، 302، 307 یا 308 مواجه میشوید، ابتدا باید مشخص کنید این پاسخ بخشی از ساختار طبیعی سایت است یا نتیجه یک پیکربندی اشتباه.
مهمترین کدهای وضعیت ۳۰۰ چیست؟
همه کدهای محدوده ۳۰۰ کاربرد یکسانی ندارند. برخی از آنها در وبسایتهای معمولی بسیار رایج هستند و برخی دیگر کمتر استفاده میشوند.
کد 300؛ Multiple Choices
کد 300 Multiple Choices زمانی استفاده میشود که سرور چند گزینه برای پاسخ به درخواست در اختیار دارد و میتواند بیش از یک نمایش یا منبع را ارائه کند.
این وضعیت در وبسایتهای معمولی نسبتاً نادر است و برخلاف 301 و 302، معمولاً برای ریدایرکت استاندارد صفحات استفاده نمیشود.
اگر یک URL سایت شما بهجای پاسخ معمولی 200، کد 300 برمیگرداند، بهتر است بررسی کنید سرور یا سیستم مدیریت محتوا دقیقاً چه پاسخی برای آن URL تنظیم کرده است.
پیشنهاد مطالعه : خطای 403 Forbidden در وردپرس چیست؟
کد 301؛ انتقال دائمی
کد 301 Moved Permanently یکی از مهمترین کدهای ریدایرکت است. زمانی استفاده میشود که یک آدرس برای همیشه به آدرس دیگری منتقل شده باشد.
برای مثال، فرض کنید یک فروشگاه لوازم خانگی صفحهای با آدرس قدیمی برای یک محصول داشته است:
example.com/product-old
و صفحه محصول به آدرس جدید منتقل شده است:
example.com/product-new
در این شرایط میتوان آدرس قدیمی را با 301 به آدرس جدید هدایت کرد.
301 زمانی انتخاب مناسبی است که انتقال دائمی باشد؛ مانند تغییر ساختار URL، تغییر دامنه یا ادغام دو صفحه مشابه.
از دید سئو نیز 301 یکی از روشهای استاندارد برای اعلام انتقال دائمی URL به موتورهای جستجو است.
کد 302؛ انتقال موقت
کد 302 Found برای زمانی استفاده میشود که انتقال صفحه موقتی است.
فرض کنید یک فروشگاه برای چند روز صفحه محصولی را به یک صفحه تبلیغاتی منتقل کرده است و پس از پایان کمپین قصد دارد کاربران را دوباره به URL اصلی برگرداند. در چنین شرایطی استفاده از ریدایرکت موقت میتواند منطقی باشد.
اشتباه رایج این است که مدیر سایت برای تمام ریدایرکتها از 302 استفاده کند، حتی زمانی که انتقال واقعاً دائمی است.
بنابراین قبل از انتخاب بین 301 و 302 باید یک سؤال ساده بپرسید:
آیا قرار است URL اصلی در آینده دوباره مورد استفاده قرار بگیرد؟
اگر پاسخ خیر است، معمولاً باید به سراغ ریدایرکت دائمی بروید.
پیشنهاد مطالعه : خطای ایجاد اتصال به پایگاه داده در وردپرس چیست؟
کد 303؛ See Other
کد 303 See Other به کلاینت اعلام میکند که برای مشاهده نتیجه درخواست باید یک URL دیگر را درخواست کند.
این کد بیشتر در سناریوهای خاص برنامههای وب و APIها دیده میشود و معمولاً گزینه اصلی برای انتقال دائمی صفحات یک وبسایت نیست.
برای مثال، بعد از ارسال موفق یک فرم ثبتنام، برنامه میتواند کاربر را به صفحهای جداگانه برای مشاهده نتیجه عملیات هدایت کند.
کد 304؛ Not Modified
کد 304 Not Modified از نظر فنی بخشی از محدوده ۳۰۰ است، اما نباید آن را با ریدایرکت اشتباه گرفت.
وقتی مرورگر یا یک کلاینت قبلاً نسخهای از یک فایل را در اختیار دارد، میتواند با استفاده از اطلاعات کش بررسی کند که آیا فایل از زمان دریافت قبلی تغییر کرده است یا خیر. اگر تغییری ایجاد نشده باشد، سرور میتواند پاسخ 304 ارسال کند تا نیازی به ارسال مجدد محتوای فایل نباشد.
بنابراین 304 به معنای انتقال صفحه نیست و معمولاً یک سازوکار بهینهسازی انتقال داده محسوب میشود.
کد 307؛ ریدایرکت موقت
کد 307 Temporary Redirect مشابه 302 برای انتقال موقت استفاده میشود، اما یک تفاوت فنی مهم دارد: در 307 روش HTTP درخواست باید در مقصد حفظ شود.
این موضوع بهخصوص برای درخواستهایی مانند POST اهمیت دارد.
به همین دلیل 307 را نمیتوان بدون توجه به نوع درخواست، صرفاً جایگزین 302 در نظر گرفت.
کد 308؛ انتقال دائمی
کد 308 Permanent Redirect مشابه 301 نشاندهنده انتقال دائمی است، اما مانند 307 روش HTTP درخواست را حفظ میکند.
به همین دلیل در سناریوهای خاصی که حفظ روش درخواست اهمیت دارد، 308 میتواند انتخاب مناسبتری باشد.
در سایتهای معمولی، 301 همچنان یکی از رایجترین روشها برای انتقال دائمی URLهای صفحات است.
پیشنهاد مطالعه : خطای 500 Internal Server Error در وردپرس چیست؟
تفاوت 301، 302، 307 و 308 چیست؟
مهمترین کدهایی که مدیران سایت هنگام بررسی Redirect با آنها مواجه میشوند، همین چهار مورد هستند.
| کد | نوع انتقال | کاربرد اصلی |
|---|---|---|
| 301 | دائمی | انتقال دائمی URL |
| 302 | موقت | انتقال موقت |
| 307 | موقت | انتقال موقت با حفظ روش درخواست |
| 308 | دائمی | انتقال دائمی با حفظ روش درخواست |
بنابراین انتخاب کد ریدایرکت نباید بر اساس اینکه «کدام کد بهتر است» انجام شود؛ بلکه باید بر اساس نوع انتقال و رفتار موردنیاز سایت انتخاب شود.
آیا ارورهای 300 روی سئو تأثیر دارند؟
خود کدهای ۳۰۰ لزوماً مشکل سئویی محسوب نمیشوند. حتی ریدایرکتها در بسیاری از پروژههای سئو کاملاً ضروری هستند.
مشکل زمانی ایجاد میشود که ریدایرکتها اشتباه، بیش از حد یا بدون برنامه ایجاد شوند.
برای مثال، اگر یک صفحه به URL دوم، URL دوم به URL سوم و URL سوم به URL چهارم منتقل شود، با یک Redirect Chain مواجه هستیم.
ساختار نامناسب:
URL A → URL B → URL C → URL D
ساختار بهتر:
URL A → URL D
ریدایرکتهای زنجیرهای میتوانند مسیر دسترسی به صفحه نهایی را طولانیتر کنند و در برخی شرایط باعث مشکلات خزیدن یا افزایش زمان دریافت پاسخ شوند.
Redirect Loop چیست و چرا باید سریع رفع شود؟
یکی از مشکلات جدیتر، حلقه ریدایرکت یا Redirect Loop است.
در این حالت URLها یکدیگر را بهصورت چرخهای فراخوانی میکنند. برای مثال:
صفحه A → صفحه B → صفحه A
مرورگر نمیتواند به صفحه نهایی برسد و معمولاً پیامی مانند ERR_TOO_MANY_REDIRECTS نمایش داده میشود.
یکی از نمونههای رایج این مشکل، تنظیم نادرست HTTP و HTTPS است. برای مثال ممکن است سرور بخواهد HTTP را به HTTPS منتقل کند، در حالی که یک تنظیم دیگر HTTPS را دوباره به HTTP برمیگرداند.
روش بررسی Redirect Loop
اگر با خطای ERR_TOO_MANY_REDIRECTS مواجه شدید، این موارد را بررسی کنید:
- تنظیمات HTTP و HTTPS
- قوانین فایل
.htaccess - تنظیمات افزونههای کش و امنیت
- تنظیمات CDN یا پراکسی
- تنظیمات وردپرس در بخش آدرس سایت
- قوانین ریدایرکت تعریفشده در سرور
- ریدایرکتهای تعریفشده در افزونههای وردپرس
در بسیاری از موارد، مشکل ناشی از وجود دو قانون متناقض در دو بخش مختلف سایت است.
پیشنهاد مطالعه : خطای 404 چیست؟ چطور 404 را رفع کنیم ؟
Redirect Chain چیست؟
Redirect Chain زمانی ایجاد میشود که یک URL قبل از رسیدن به مقصد نهایی، چند بار تغییر مسیر دهد.
برای مثال، تصور کنید آدرس یک صفحه در طول زمان چند مرتبه تغییر کرده است:
صفحه قدیمی → صفحه جدید → صفحه جدیدتر → صفحه نهایی
بهتر است در صورت امکان، URL قدیمی مستقیماً به آخرین URL معتبر منتقل شود.
قاعده کاربردی: اگر مقصد نهایی را میدانید، ریدایرکت را مستقیماً به مقصد نهایی وصل کنید.
این موضوع هم ساختار سایت را سادهتر میکند و هم بررسی و مدیریت ریدایرکتها را آسانتر خواهد کرد.
چگونه ارورهای 300 را در سایت پیدا کنیم؟
برای پیدا کردن ریدایرکتهای مشکلدار، ابتدا باید مشخص کنید پاسخ HTTP مربوط به URL چیست.
یکی از سادهترین روشها استفاده از ابزارهای بررسی Header است. URL را وارد میکنید و ابزار مشخص میکند سرور چه کد وضعیتی برگردانده و آیا URL به آدرس دیگری منتقل شده است یا خیر.
در سایتهای بزرگتر، بهتر است بهجای بررسی دستی تعداد زیادی URL، گزارش کامل URLها و Status Codeها استخراج شود. در این گزارش میتوان URLهایی با وضعیتهایی مانند 301، 302، 307، 308 و همچنین زنجیرههای Redirect را شناسایی کرد.
اگر سایت با وردپرس ساخته شده باشد، افزونههای مدیریت Redirect نیز میتوانند برای بررسی و مدیریت تغییر مسیرها مفید باشند؛ اما استفاده بیش از اندازه از افزونهها و ایجاد قوانین متعدد بدون مستندسازی میتواند مدیریت ریدایرکتها را دشوار کند.
چطور Redirect یک URL را بررسی کنیم؟
فرض کنید متوجه شدهاید آدرس زیر به صفحه دیگری منتقل میشود:
example.com/old-page
ابتدا باید مشخص کنید پاسخ اولیه چیست. سپس آدرس مقصد را بررسی کنید.
مثلاً:
/old-page → 301 → /new-page
اگر /new-page مستقیماً پاسخ 200 داشته باشد، ساختار مناسبی دارید.
اما اگر نتیجه این باشد:
/old-page → 301 → /page-2 → 302 → /new-page
یک زنجیره ریدایرکت ایجاد شده است و بهتر است در صورت امکان قانون را به شکل زیر اصلاح کنید:
/old-page → 301 → /new-page
چگونه ارورهای 300 را در وردپرس رفع کنیم؟
در وردپرس، مشکلات Redirect میتوانند از چند بخش مختلف ایجاد شوند. بنابراین قبل از تغییر کدها، بهتر است منبع ریدایرکت مشخص شود.
۱. قوانین Redirect را بررسی کنید
اگر برای URL موردنظر ریدایرکت تعریف کردهاید، بررسی کنید مقصد آن درست باشد و به URL دیگری که خودش Redirect شده است اشاره نکند.
برای مثال اگر این قانون وجود دارد:
/old-product → /product-2
بررسی کنید /product-2 خودش به /product-3 منتقل نشود.
۲. تنظیمات آدرس وردپرس را بررسی کنید
در وردپرس، آدرس سایت و آدرس وردپرس باید با ساختار واقعی سایت هماهنگ باشند.
برای مثال اگر سایت به HTTPS منتقل شده، وجود تنظیمات متناقض بین HTTP و HTTPS میتواند باعث ایجاد حلقه ریدایرکت شود.
مسیر معمول بررسی این بخش:
پیشخوان وردپرس ← تنظیمات ← عمومی
در این قسمت، آدرس وردپرس و آدرس سایت را بررسی کنید.
۳. فایل .htaccess را بررسی کنید
در سرورهای Apache، قوانین Redirect ممکن است در فایل .htaccess قرار داشته باشند.
اگر چند قانون برای انتقال HTTP به HTTPS، تغییر دامنه، حذف www یا تغییر ساختار URL نوشته شده باشد، ممکن است قوانین با یکدیگر تداخل پیدا کنند.
قبل از ویرایش .htaccess حتماً از فایل نسخه پشتیبان تهیه کنید؛ زیرا یک دستور اشتباه میتواند دسترسی به سایت را با مشکل مواجه کند.
۴. افزونههای Redirect و کش را بررسی کنید
اگر چند افزونه مختلف در سایت قابلیت Redirect دارند، ممکن است یک URL توسط چند سیستم مختلف مدیریت شود.
برای نمونه، ممکن است یک قانون در افزونه Redirect تعریف شده باشد و قانون دیگری در افزونه امنیتی یا تنظیمات سرور وجود داشته باشد.
در چنین شرایطی، پیدا کردن منبع اصلی Redirect اهمیت بیشتری از ایجاد یک قانون جدید دارد.
۵. CDN و تنظیمات سرور را بررسی کنید
اگر سایت از CDN یا سرویسهای پراکسی استفاده میکند، بخشی از قوانین Redirect ممکن است خارج از وردپرس اجرا شوند.
در نتیجه اگر ریدایرکت را در وردپرس پیدا نکردید، تنظیمات CDN، وبسرور و پروکسی را نیز بررسی کنید.
چه زمانی باید 301 را بهجای 302 استفاده کنیم؟
این سؤال یکی از مهمترین موارد هنگام مدیریت Redirect است.
اگر یک صفحه برای همیشه به آدرس دیگری منتقل شده است، 301 معمولاً انتخاب منطقی است.
برای مثال یک شرکت ممکن است صفحه معرفی یک محصول قدیمی را حذف کرده و محصول جدید را جایگزین آن کند. اگر قرار نیست URL قبلی دوباره استفاده شود، ریدایرکت دائمی مناسبتر است.
اما اگر صفحه فقط بهصورت موقت به محل دیگری منتقل شده و قرار است بعداً URL اصلی دوباره فعال شود، 302 میتواند انتخاب مناسبی باشد.
اشتباه در این انتخاب ممکن است باعث شود موتورهای جستجو برداشت متفاوتی از وضعیت URL داشته باشند.
آیا حذف همه Redirectها کار درستی است؟
خیر. حذف همه ریدایرکتها معمولاً راهحل مناسبی نیست.
تصور کنید یک فروشگاه سالها فعالیت کرده و تعداد زیادی لینک از سایتهای دیگر به URLهای قدیمی آن ایجاد شده است. اگر مدیر سایت تمام URLهای قدیمی را بدون بررسی حذف کند، ممکن است کاربران با صفحات 404 مواجه شوند و مسیرهای ارزشمند قبلی نیز از بین بروند.
راهکار صحیح این است که ریدایرکتهای ضروری حفظ و ریدایرکتهای اضافی، زنجیرهای یا اشتباه اصلاح شوند.
ریدایرکتهای غیرضروری را چگونه پیدا کنیم؟
برای مدیریت صحیح Redirectها، بهتر است هر قانون را با یک دلیل مشخص نگهداری کنید.
برای مثال:
| URL قدیمی | مقصد | وضعیت | دلیل |
|---|---|---|---|
| صفحه قدیمی محصول | صفحه محصول جدید | 301 | تغییر URL |
| صفحه کمپین | صفحه فروش | 302 | کمپین موقت |
| URL با HTTP | همان URL با HTTPS | 301 | انتقال به HTTPS |
اگر مشخص نیست چرا یک Redirect ایجاد شده، بهتر است قبل از حذف آن تأثیرش روی کاربران، لینکهای خارجی و ساختار سایت بررسی شود.
آیا Redirect باعث کاهش سرعت سایت میشود؟
خود یک ریدایرکت لزوماً مشکل بزرگی ایجاد نمیکند؛ اما هر بار که مرورگر مجبور شود ابتدا یک URL و سپس URL دیگری را درخواست کند، یک مرحله اضافی به فرایند دریافت صفحه اضافه میشود.
به همین دلیل بهتر است تعداد تغییر مسیرها تا حد امکان منطقی و مستقیم باشد.
بهعنوان مثال:
نامناسب:
آدرس قدیمی ← آدرس قدیمیتر ← آدرس جدید ← صفحه نهاییبهتر:
آدرس قدیمی ← صفحه نهایی
این موضوع مخصوصاً در سایتهایی که تعداد زیادی URL دارند اهمیت بیشتری پیدا میکند.
تفاوت Redirect با خطای 404 چیست؟
یکی از اشتباهات رایج این است که Redirect و 404 یک مشکل تلقی شوند، در حالی که ماهیت آنها متفاوت است.
Redirect یعنی درخواست به آدرس دیگری هدایت شده است.
404 Not Found یعنی سرور در URL درخواستشده منبع موردنظر را پیدا نکرده است.
برای مثال اگر آدرس یک صفحه محصول تغییر کرده باشد، میتوان URL قدیمی را با 301 به URL جدید منتقل کرد. اما اگر هیچ صفحه جایگزین مناسبی وجود نداشته باشد، همیشه ایجاد Redirect به یک صفحه نامرتبط تصمیم درستی نیست.
چکلیست رفع ارورهای 300
اگر در سایت با تعداد زیادی Redirect مواجه شدهاید، بررسی را به این ترتیب انجام دهید:
- مشخص کنید هر URL دقیقاً چه Status Codeای برمیگرداند.
- مقصد هر Redirect را مشخص کنید.
- بررسی کنید مقصد نهایی Status Code مناسب دارد.
- Redirect Chainها را پیدا کنید.
- Redirect Loopها را شناسایی و رفع کنید.
- موارد اشتباه 302 را که باید دائمی باشند بررسی کنید.
- قوانین
.htaccessو تنظیمات سرور را بررسی کنید. - افزونههای Redirect، کش و امنیت را بررسی کنید.
- تنظیمات HTTP و HTTPS را کنترل کنید.
- Redirectهای غیرضروری را حذف یا مستقیماً به مقصد نهایی متصل کنید.
جمعبندی؛ آیا ارورهای 300 مشکل هستند؟
کدهای وضعیت ۳۰۰ را نباید بهصورت کلی «ارور» در نظر گرفت. این کدها عمدتاً برای اطلاعرسانی درباره تغییر مسیر یا وضعیت منابع مورد استفاده قرار میگیرند و بعضی از آنها مانند 301 و 308 برای انتقال دائمی URLها کاربرد دارند.
مشکل زمانی ایجاد میشود که Redirectها بدون برنامه ایجاد شوند، زنجیرههای طولانی تشکیل دهند، بین چند URL حلقه ایجاد کنند یا از کد نامناسبی برای یک انتقال استفاده شود.
بنابراین هنگام مشاهده ارورهای 300، بهجای حذف همه Redirectها، ابتدا باید مسیر کامل درخواست، Status Code، مقصد نهایی و دلیل ایجاد ریدایرکت مشخص شود. در یک سایت سالم، هدف حذف همه Redirectها نیست؛ هدف ایجاد ساختاری است که در آن هر Redirect دلیل مشخص، مقصد صحیح و کمترین مسیر ممکن را داشته باشد.
اگر تعداد Redirectهای سایت زیاد است یا ریدایرکتها باعث ایجاد خطاهایی مانند ERR_TOO_MANY_REDIRECTS شدهاند، بررسی همزمان تنظیمات وردپرس، سرور، CDN و قوانین Redirect ضروری است. در چنین شرایطی، یک بررسی فنی دقیق میتواند از ایجاد مشکلات گستردهتر در دسترسی کاربران و خزش سایت جلوگیری کند.
اگر در سایت خود به مشکل ریدایرکت برخورد کردید میتوانید با کارشناسان پرشیا وب و بخش پشتیبانی و تعمیر سایت در تماس باشید.