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

کدهای وضعیت (HTTP Status Code) کدهایی سه رقمی هستند که توسط یک سرور در پاسخ به درخواست مرورگر صادر میشوند. هر بار که روی یک لینک کلیک میکنید یا یک URL را تایپ میکنید و Enter را میزنید، مرورگر شما درخواستی را برای سرور سایت مورد نظر ارسال میکند. سرور درخواست را دریافت و پردازش میکند و سپس منابع مرتبط را همراه با یک هدر HTTP ارسال میکند.
هدرهای HTTP که شامل همان کد سه رقمی هستند، به شما میگویند که هنگام دریافت درخواست برای مشاهده یک صفحه خاص چه اتفاقی افتاده است. هر بار که مرورگر شما با یک سرور تعامل دارد، این نوع پیامها از سرور به سمت مرورگر بازگردانده میشوند، حتی اگر شما آنها را نبینید. معمولا فقط زمانی که مشکلی پیش میآید، ممکن است یکی از این کدها را در مرورگر خود مشاهده کنید.
درک کلاسهای HTTP Status Code
کد وضعیت HTTP به ۵ کلاس تقسیم میشود که هر کلاس شامل پاسخهایی با معنی مشابه یا مرتبط است. آشنایی با هر کلاس به شما کمک میکند تا ماهیت کلی کد وضعیت مربوط به آن کلاس را درک کنید. بیایید نگاهی به هر یک از این کلاسها داشته باشیم که عبارتاند از:

- 1XX: کدهایی که با 1 شروع میشوند، ماهیت اطلاعرسانی دارند و نشان میدهند که درخواست ایجاد شده توسط مرورگر در حال پردازش است.
- 2XX: این کدها نشان میدهند که فرایند درخواست مرورگر توسط سرور دریافت، درک و پردازش شده است.
- 3XX: کدهای 3XX نشاندهنده تغییر مسیر هستند و زمانی بازگردانده میشوند که یک منبع جدید جایگزین منبع درخواست شده است.
- 4XX: این کدها خطای کلاینت را نشان میدهند، به این معنا که احتمالا مشکلی در ایجاد درخواست وجود داشته است.
- 5XX: کدهایی که با 5 شروع میشوند، خطای سرور را نشان میدهند. به این معنی که درخواست از سمت سرور پذیرفته شده است، اما خطایی در سرور مانع از تکمیل درخواست شده است.
در هر یک از این کلاسها، انواع مختلفی از کد وضعیت وجود دارد که ممکن است توسط سرور بازگردانده شوند. هر status code معنای خاص و منحصربهفردی دارد که در ادامه به صورت دقیقتر به آن خواهیم پرداخت.
کدهای وضعیت 1XX: اطلاعاتی (Informational)

همانطور که گفته شد، کدهای وضعیت HTTP که با رقم 1 شروع میشوند، نشان میدهند که درخواست شما توسط سرور دریافت شده و در حال پردازش است. این کدها به معنای وجود مشکل نیستند، بلکه نشان میدهند که فرایند هنوز در حال انجام است. در این گروه، چند کد وجود دارد که کاربران ممکن است با آنها مواجه شوند و باید از آنها آگاه باشند. ابتدا نگاهی به جدول خواهیم داشت و سپس کدهای رایجتر را بیشتر بررسی میکنیم.
| کد وضعیت | توصیف | توضیحات |
| 100 | Continue | درخواست دریافت شده و کاربر میتواند به ارسال داده ادامه دهد. |
| 101 | Switching Protocols | سرور، درخواست کاربر برای تغییر پروتکل را پذیرفته است. |
| 102 | Processing | سرور در حال پردازش درخواست است اما هنوز پاسخی دریافت نشده است. |
| 103 | Early Hints | سرور هدر پاسخ را قبل از ارسال کامل پاسخ، برمیگرداند. |
کد 100 (Continue)
این کد به شما میگوید که بخشی از درخواست بدون هیچ مشکلی دریافت شده است. در این مرحله، همه چیز خوب است اما هنوز پردازش ادامه دارد. اگر بخش باقیمانده درخواست رد نشود، سرور پس از تکمیل درخواست، یک پاسخ نهایی ارسال خواهد کرد.
کد 101 (Switching Protocols)
از زمان آغاز به کار اینترنت، پروتکلهای HTTP زیادی ایجاد شده است. اولین نسخه مستند این پروتکل، نسخه 0.9 بود و آخرین نسخه آن هم HTTP 2.0 است. کد وضعیت 101 نشان میدهد که سرور درخواست کلاینت برای تغییر به یک پروتکل HTTP متفاوت از طریق فیلد هدر Upgrade را پذیرفته است.
کدهای وضعیت 2XX: اعلام موفقیت (Success)

کدهای وضعیت HTTP 2XX نشان میدهند که درخواست شما با موفقیت توسط سرور پردازش شده است و پاسخ موردنظر به شما ارسال شده است. برخلاف کدهای وضعیت 4XX، کدهای وضعیت 2XX نشاندهنده خطا نیستند و به شما میگویند که همه چیز به درستی در حال انجام است توجه داشته باشید کدهای وضعیت 2XX در پشت صحنه پردازش شده و به ندرت توسط کاربران مشاهده میشوند، مگر اینکه از ابزارهای توسعه یا SEO برای مشاهده تمام پاسخهای HTTP یک صفحه استفاده کنید.
| کد وضعیت | توصیف | توضیحات |
| 200 | OK | درخواست با موفقیت انجام شده و پاسخ حاوی محتوای درخواستی است. این رایجترین کد وضعیت 2XX است. |
| 201 | Created | درخواست با موفقیت انجام و یک منبع جدید ایجاد شده است (مثل ایجاد یک حساب کاربری جدید). |
| 202 | Accepted | درخواست دریافت شده اما هنوز پردازش نشده است (مثلا در صف پردازش قرار گرفته است). |
| 203 | Non-Authoritative Information | اطلاعات برگردانده شده لزوما جدیدترین یا کاملترین نیستند. |
| 204 | No Content | درخواست با موفقیت انجام شده اما محتوایی برای ارسال وجود ندارد. |
| 205 | Reset Content | مشتری باید صفحه را بازنشانی کند (مثلا برای پاک کردن فیلدهای فرم). |
| 206 | Partial Content | فقط بخشی از محتوای درخواستی ارسال شده است (مثلا در هنگام دانلود فایلهای بزرگ). |
| 207 | Multi-Status | پاسخ شامل اطلاعات مربوط به چندین منبع است (مثلا در سیستمهای وبلاگنویسی). |
کد 200 (OK)
این رایجترین کد وضعیت HTTP است و نشان میدهد که همه چیز به خوبی پیش رفته است. همانطور که گفته شد، این کد به صورت عادی نمایش داده نمیشود اما در هدر پاسخ وجود دارد.
کدهای 201 تا 207
این کدها برای شرایط خاصتر استفاده میشوند و نشان میدهند که درخواست با موفقیت انجام شده است اما ممکن است برخی تفاوتهای جزئی در نحوه پردازش درخواست وجود داشته باشد.
کدهای وضعیت 3XX: تغییر مسیر (Redirection)

کدهای وضعیت 3XX برای تغییر مسیر URL استفاده میشوند. وبسایتها دائما در حال تغییر و تکامل هستند، بنابراین مواقعی وجود دارد که مدیران وبسایت بخواهند کاربران را به یک صفحه بهروزشده یا متفاوت هدایت کنند. تغییر مسیرها به کاربران کمک میکند تا بدون گم شدن در وبسایت، به صفحه مورد نظر برسند. اقدامات تغییر مسیر ممکن است به طور خودکار توسط مرورگر انجام شود یا نیاز به تعامل بیشتر از طرف کاربران داشته باشد. این کدها برای سئو و تجربه کاربری بسیار مهم هستند، زیرا به موتورهای جستجو میگویند که چه محتوایی را بررسی و ایندکس کنند.
| کد وضعیت | توصیف | توضیحات |
| 300 | Multiple Choices | درخواست چندین پاسخ احتمالی دارد و کاربر باید یکی را انتخاب کند. |
| 301 | Moved Permanently | منبع درخواستی به طور دائم به یک URL جدید منتقل شده است. |
| 302 | Found (Moved Temporarily) | منبع درخواستی به طور موقت به یک URL جدید منتقل شده است. |
| 303 | See Other | پاسخ به یک درخواست POST باید با یک GET در URL مشخص شده انجام شود. |
| 304 | Not Modified | محتوای منبع از آخرین درخواست تغییر نکرده است. |
| 305 | Use Proxy | برای دسترسی به منبع، باید از پروکسی مشخص شده استفاده شود. |
| 307 | Temporary Redirect | مشابه 302 است اما متد HTTP در درخواستهای بعدی باید حفظ شود. |
| 308 | Permanent Redirect | مشابه 301 است اما متد HTTP در درخواستهای بعدی باید حفظ شود. |
کدهای 301 و 308
این دو کد تقریبا عملکرد یکسانی دارند و نشان میدهند که تغییر مسیر دائمی است و مرورگر باید به طور خودکار به آدرس جدید هدایت شود و لینکهای موجود نیز به آدرس جدید تغییر کنند.
کدهای 302 و 307
این دو کد هم عموما یکسان در نظر گرفته میشوند و نشان میدهند که تغییر مسیر موقتی است اما ممکن است در آینده آدرس منبع تغییر کند. بنابراین، برخلاف کد وضعیت 301، کد وضعیت 302 نشان دهنده یک جابجایی موقت است.
کد 303 (See Other)

این کد زمانی استفاده میشود که سرور میخواهد به مرورگر بگوید به آدرس دیگری برود. این معمولا بعد از ارسال یک فرم (POST) اتفاق میافتد، تا کاربر به یک صفحه نتیجه یا تایید هدایت شود. نکته مهم این است که درخواست جدید باید با روش GET انجام شود، حتی اگر درخواست اول POST باشد. به عنوان مثال، زمانی که فرم خرید و پرداخت را در یک فروشگاه اینترنتی پر میکنید و تایید را میزنید، تغییر مسیر 303 شما را به صفحه پرداخت موفق میبرد. این باعث میشود که اگر کاربر صفحه را دوباره بارگذاری کند، فرم خرید دوباره ارسال نشود.
کد 304
این کد به مرورگر میگوید که محتوای صفحه از آخرین بار که درخواست شده تغییر نکرده است و بنابراین نیازی به دانلود مجدد آن نیست. این کد برای بهبود عملکرد و کاهش ترافیک شبکه استفاده میشود. در صورتی که صفحه از زمان آخرین بازدید تغییر کرده باشد، سرور یک کد وضعیت OK 200 را برمیگرداند و محتوای بهروز را به کلاینت ارسال میکند.
کدهای وضعیت 4XX: خطاهای کلاینت (Client Error)

کدهای 4XX در HTTP نشاندهنده خطاهای سمت کلاینت هستند، به این معنا که مشکلی در درخواست ارسالشده از سوی کاربر وجود دارد. این کدها معمولا نشاندهنده اشتباهاتی مانند درخواست برای صفحهای که وجود ندارد (404 Not Found)، عدم دسترسی به منبع به دلیل احراز هویت ناکافی (401 Unauthorized) یا ممنوع بودن دسترسی (403 Forbidden) هستند. کدهای 4XX هم جزو کدهای وضعیت مهم برای سئو هستند، چنانچه اگر موتورهای جستجو سایت شما را بررسی کنند و به عنوان مثال با خطای 404 مواجه شوند، این را به عنوان یک خطا در نظر میگیرند. در این شرایط شما باید از یک ریدایرکت استفاده کنید تا کاربر را به صفحهای دیگر هدایت کند. به طور کلی، ارسال کد 4XX به این معنی است که سرور درخواست شما را درک کرده، اما به دلایلی نمیتواند آن را پردازش کند.
| کد وضعیت | توصیف | توضیحات |
| 400 | Bad Request | درخواست شما از نظر نحوی نامعتبر است. ممکن است خطایی در آدرس URL، پارامترها یا هدرهای درخواست وجود داشته باشد. |
| 401 | Unauthorized | برای دسترسی به این منبع، احراز هویت لازم است. ممکن است نیاز به وارد کردن نام کاربری و رمز عبور داشته باشید. |
| 403 | Forbidden | حتی با احراز هویت، شما مجاز به دسترسی به این منبع نیستید. ممکن است به دلیل محدودیتهای دسترسی یا مجوزها باشد. |
| 404 | Not Found | منبع یا صفحه درخواستی یافت نشد. ممکن است آدرس URL اشتباه باشد یا صفحه حذف شده باشد. |
| 405 | Method Not Allowed | متد HTTP استفاده شده برای این درخواست مجاز نیست. |
| 406 | Not Acceptable | هیچ یک از قالبهای محتوایی که سرور پشتیبانی میکند، با درخواست شما مطابقت ندارد. |
| 408 | Request Timeout | سرور در مدت زمان مشخص شده پاسخی دریافت نکرد. ممکن است اتصال شما قطع شده یا سرور مشغول باشد. |
| 409 | Conflict | درخواست شما نمیتواند به دلیل تعارض با وضعیت فعلی منبع انجام شود. |
| 410 | Gone | منبع درخواستی دیگر وجود ندارد و آدرس آن تغییر نخواهد کرد. |
| 411 | Length Required | طول محتوا در درخواست مشخص نشده است. |
| 412 | Precondition Failed | پیش شرطهای درخواست برآورده نشده است. |
| 413 | Payload Too Large | اندازه بدنه درخواست از حداکثر اندازه مجاز بیشتر است. |
| 414 | URI Too Long | آدرس URI درخواست بیش از حد طولانی است. |
| 415 | Unsupported Media Type | نوع محتوای درخواست پشتیبانی نمیشود. |
| 416 | Range Not Satisfiable | محدوده درخواست شده معتبر نیست. |
| 422 | Unprocessable Entity | ساختار دادههای درخواست معتبر نیست. |
| 429 | Too Many Requests | تعداد درخواستهای شما در واحد زمان از حد مجاز گذشته است. |
| 431 | Request Header Fields Too Large | اندازه هدرهای درخواست بیش از حد بزرگ است. |
| 451 | Unavailable For Legal Reasons | دسترسی به منبع به دلایل قانونی غیرممکن است. |
کد 404 (Not Found)
یکی از رایجترین و بدنامترین کدهای وضعیتی که کاربران و توسعهدهندگان با آن مواجه میشوند، کد وضعیت خطای 404 است. این کد نشان میدهد که منبع یا صفحه مورد نظر از سرور حذف شده یا اصلا وجود ندارد. در مواردی که صفحه برای همیشه حذف میشود، یا باید از ریدایرکت مناسب (301 -302) استفاده شود یا کد وضعیت 410 استفاده شود تا نشان دهد محتوای مورد نظر به دلایلی حذف شده است.
کد 403 (Forbidden)
این خطا زمانی رخ میدهد که شما مجوز دسترسی به یک صفحه یا فایل را ندارید. احتمالا موقع استفاده از سرویسهای بینالمللی مثل ابزارهای گوگل یا وبسایتهای آموزشی زیاد با این خطا روبرو شده باشید، زیرا از سوی کشورهای دیگر تحریم هستیم و به همین دلیل برخی از وبسایتهای خارجی به ما اجازه دسترسی به محتوای خود را نمیدهند.
کد 406 (Not Acceptable)

کد وضعیت 406 زمانی برگردانده میشود که سرور نمیتواند محتوایی مطابق با معیارهای تعیینشده در هدر درخواست کاربر ارائه دهد. مثلا اگر کلاینت درخواست دادههایی به فرمت JSON بدهد، ولی سرور فقط HTML داشته باشد، این کد را برمیگرداند (کاربران ایرانی هم ممکن است با این کد به عنوان جایگزین کد 403 روبهرو شوند).
کد 408 (Request Timeout)
کد 408 به این معنی است که سرور منتظر دریافت کامل درخواست از کلاینت است ولی درخواست در زمان مشخصشده ارسال نشده است. به عبارت دیگر، اگر کلاینت نتواند درخواست را در زمان مناسب ارسال کند، سرور این کد را ارسال میکند و به کلاینت میگوید که درخواستش زمانبر بوده است. در بسیاری از موارد ممکن است به دلیل کندی یا قطعی اینترنت با کد 408 مواجه شوید، چرا که ارسال درخواست بسیار طولانی شدهاست.
کدهای وضعیت HTTP 5XX: خطاهای سرور

کدهای وضعیت HTTP 5XX نشان میدهند که مشکلی در سمت سرور وجود دارد و درخواست شما به دلیل خطایی که در سرور رخ داده است، نمیتواند پردازش شود. در چنین شرایطی، درخواست شما از نظر نحوی صحیح است اما سرور دچار مشکل فنی یا نقص در عملکرد شده است.
| کد وضعیت | توصیف | توضیحات |
| 500 | Internal Server Error | خطای داخلی سرور. این یک خطای کلی است که نشان میدهد سرور در پردازش درخواست شما با مشکلی مواجه شده است. |
| 501 | Not Implemented | سرور توانایی پردازش این درخواست را ندارد. ممکن است این ویژگی در سرور پیادهسازی نشده باشد. |
| 502 | Bad Gateway | سرور به عنوان یک دروازه عمل میکند و در دریافت پاسخ از سرور بالادستی با مشکل مواجه شده است. |
| 503 | Service Unavailable | سرور در حال حاضر در دسترس نیست. ممکن است به دلیل بارگذاری زیاد، تعمیرات یا مشکلات دیگر باشد. |
| 504 | Gateway Timeout | سرور به عنوان یک دروازه عمل میکند و در دریافت پاسخ از سرور بالادستی در زمان تعیین شده موفق نبوده است. |
| 505 | HTTP Version Not Supported | نسخه HTTP مورد استفاده در درخواست پشتیبانی نمیشود. |
کد 503 زمانی به کاربر نمایش داده میشود که سرور به طور موقت قادر به پردازش درخواست نباشد. این وضعیت معمولا به دلیل بار زیاد روی سرور، تعمیرات یا نگهداری موقت رخ میدهد. برای مثال، اگر یک وبسایت به دلیل بهروزرسانی سرور یا ترافیک بیش از حد از دسترس خارج شود، سرور ممکن است کد 503 را ارسال کند تا به کلاینت بگوید که این مشکلی موقت است و بعدا دوباره امتحان کند.
کد 504 (Gateway Timeout)
کد 504 زمانی رخ میدهد که سرور به عنوان یک واسطه عمل میکند و در دریافت پاسخ از سرور بالادستی با تاخیر مواجه شود. برای مثال، اگر شما از یک وبسایت بازدید کنید و آن وبسایت برای دریافت اطلاعات به یک سرویس خارجی وابسته باشد اما آن سرویس خارجی به موقع پاسخ ندهد، سرور ممکن است کد 504 را برگرداند.

خطاهای 5XX میتوانند بر سئوی وبسایت تاثیر منفی بگذارند. بنابراین، اگر وبسایتی که از آن بازدید میکنید به طور مکرر خطاهای 5XX را نشان میدهد، بهتر است از وبسایتهای دیگر استفاده کنید.
نکته: خطاهای 5XX معمولا به دلیل مشکلات در سرور رخ میدهند و شما به عنوان کاربر نمیتوانید کاری برای رفع آنها انجام دهید.
چگونه کدهای وضعیت پاسخ HTTP را بررسی کنیم؟
برای بررسی کدهای وضعیت HTTP دهها روش وجود دارد که هر کدام از آنها را میتوانید با توجه به نیازهایتان استفاده کنید. در ادامه چند مورد از ابزارهای بررسی خطا و کد وضعیت را معرفی میکنیم.
بررسی کد وضعیت با REDbot
برای تجزیه و تحلیل جزئی یک صفحه، میتوانید از ابزاری مانند REDbot استفاده کنید که هدرها را بررسی میکند. آدرس URL صفحهای را که میخواهید تست کنید در این ابزار وارد کنید و سپس روی دکمه فلش کلیک کنید تا هدرهای صفحه را دریافت کند.
بررسی کد وضعیت HTTP با WebSniffer

برای بررسی پیشرفتهتر، میتوانید از WebSniffer استفاده کنید. میتوانید یک URL را وارد و روی «Lookup» (جستجو) کلیک کنید تا یک تست ساده اجرا شود. همچنین میتوانید روی «Options» (تنظیمات) کلیک کنید تا نوع درخواست، نسخه HTTP و user agent را پیکربندی کنید. تغییر user agent به Googlebot به شما کمک میکند تا ببینید چه کدهای وضعیتی در زمان کرال وبسایت توسط گوگل برگردانده میشود. در حالت ایدهآل، Googlebot باید کدهای پاسخی مشابه سایر user agent دریافت کند، اما گاهی اوقات ممکن است مشکلی در تنظیمات سرور وجود داشته باشد.
برای مشاهده وضعیت کدها، ابتدا آدرس صفحه مورد نظر را وارد و روی Lookup کلیک کنید تا هدرهای HTTP و کد وضعیت دریافت شود. برای مشاهده نتایج باید به پایین صفحه بروید.
بررسی کد وضعیت HTTP در ابزار توسعهدهنده گوگل کروم (DevTools)
شما میتوانید با استفاده از DevTools گوگل کروم، کد وضعیت یک صفحه را بررسی کنید. برای راهاندازی DevTools، قبل از باز کردن یک صفحه وب در کروم روی صفحه راستکلیک و «Inspect» (بررسی) را انتخاب کنید. همچنین میتوانید با کلید F12 آن را باز کنید. پس از باز شدن DevTools، روی «Network» (شبکه) در نوار بالا کلیک کنید. (توجه داشته باشید که ممکن است این گزینه پنهان باشد و با کلیک روی «>>» میتوانید آن را پیدا کنید.) پس از باز کردن Network، صفحه وب را به طور معمول در مرورگر کروم خود بارگذاری کنید.
تمام منابع مورد نیاز برای بارگذاری صفحه شما در ناحیه Network فهرست شدهاند. اولین منبع فهرستشده، صفحه اصلی بارگذاری شده است. روی آن کلیک کنید و یک پنل جدید ظاهر میشود. در این پنل میتوانید کد وضعیت صفحه درخواستشده را مشاهده کنید.
بررسی کلی کد وضعیت HTTP یک وبسایت

به جای بررسی تکتک صفحات، میتوانید با استفاده از ابزارهایی مانند وبسایت HTTPStatus، کدهای پاسخ چندین صفحه را به طور همزمان بررسی کنید. همچنین میتوانید از ابزاری مانند Screaming Frog یا Jet Octopus برای بررسی وضعیت پاسخ استفاده کنید. پس از اجرای این ابزارها، لیستی از تمام صفحاتی که در وبسایت شما وجود دارند و کدهای وضعیت مربوط به آنها را مشاهده خواهید کرد. حتما به صفحاتی که کد وضعیت 200 را برنمیگردانند، توجه کنید.
سخن پایانی
در این مطلب سعی کردیم تمام کدهای وضعیت HTTP را لیست کنیم و کدهای رایجتر را کمی دقیقتر توضیح دهیم. شناخت این کدها و توانایی پیدا کردن آنها، یکی از مهارتهای ضروری برای توسعهدهندگان و کارشناسان سئو است که میخواهند یک خروجی بدون خطا به کاربر ارائه بدهند. بنابراین برای شناخت این کدها، ابزارها و راههای رفع کدهای نامطلوب زمان بگذارید.
منابع:
www.developer.mozilla.org | www.w3schools.com

دیدگاهتان را بنویسید