کدهای وضعیت HTTP همانند یادداشتهای کوچکی از سمت سرور هستند که در پاسخ به درخواست مرورگر ارسال میشوند. در واقع این کدها بخشی از محتوای وبسایت نیستند.
این کدها پیغامهایی از جانب سرور هستند که به شما اطلاع میدهند که وقتی درخواست مشاهده یک صفحه خاص از یک وبسایت خاص را داشتید، اوضاع چطور پیش رفته و آیا موفق به دستیابی به صفحه موردنظر شدهاید یا خیر و اگر خیر، مشکل از کجاست؟
هربار که مرورگر شما با سرور یک وبسایت ارتباط برقرار میکند، این پاسخها توسط سرور بازگردانده میشود. حتی اگر شما آنها را مشاهده نکنید. اگر شما مالک یک وبسایت یا توسعهدهنده آن هستید، درک این کدها بسیار مهم است. این کدها ابزارهای ارزشمندی برای تشخیص و رفع پیکربندی وبسایت و سرور شماست.
در این مقاله وضعیتهای سرور و کدهای خطا به طور کامل معرفی خواهد شد. با ما همراه باشید تا یکبار برای همیشه، با این کدهای وضعیت و ماهیت و مفهوم آنها به طور کامل آشنا شوید.
فهرست عناوین:
کدهای وضعیت در HTTP چیست؟
هربار که روی یک لینک کلیک میکنید یا یک URL را در نوار آدرس مرورگر تایپ کرده و سپس Enter میکنید، مرورگر شما درخواستی به سمت سرور وبسایت مربوطه ارسال میکند.
زمانی که مرورگر کاربر درخواستی به سمت سرور وبسایت ارسال میکند، سرور این پاسخ را دریافت و سپس پردازش میکند. در ادامه پاسخی از سمت سرور به مرورگر ارسال میشود. این پاسخ بهصورت یک کد 3 رقمی نمایش داده میشود که به آن کدهای وضعیت HTTP یا به زبان لاتین HTTP Status Codes گفته میشود.
این کدها در هدر HTTP به مرورگر شما تحویل داده میشوند. این کدهای وضعیت معادل اینترنتی مکالمه بین مرورگر و سرور شما هستند. البته شما همیشه این کدها را نخواهید دید. مگر زمانی که خطایی در میان باشد.
معمولاً وقتی مشکلی پیش میآید، کدهای وضعیت خطا، به شما نمایش داده میشود و مفهوم آن است که چیزی در این میان درست نیست. درواقع مشکلی وجود دارد که این کد در تلاش است تا شما را از آن مشکل باخبر کند.
اطلاع از ماهیت و مفهوم این کدهای وضعیت و نحوه استفاده از آنها به شما کمک میکند به سرعت خطاهای سایت را تشخیص دهید و در حداقل زمان خرابیهای سمت سرور را برطرف کنید.
حتی میتوانید از برخی از این کدهای وضعیت برای کمک به موتورهای جستجو و دسترسی افراد به سایت خود استفاده کنید. برای مثال، تغییر مسیر 301 به رباتها و افراد میگوید صفحهای که به دنبال آن هستند، به طور دائمی به مکان دیگری منتقل شده است.
همان طور که گفتیم، هر کد وضعیت از 3 رقم تشکیل شده است. رقم اول عددی بین 1 تا 5 است. این کدها بهصورت 1xx تا 5xx نمایش داده میشوند. هر یک از این کدها دارای کلاسهای متفاوتی از پاسخهای سرور هستند.
کلاسهای کدهای وضعیت HTTP
کدهای وضعیت HTTP به 5 کلاس تقسیم میشوند. این کلاسها گروههای مختلف پاسخ سرور است که هرکدام معنی مشخصی دارند. اولین رقم از هر کد خطا نشانگر کلاس خطای مربوطه است.
1xx – اطلاعاتی: سرور درخواست شما را دریافت کرده و در حال بررسی درخواست شماست.
2xx – موفقیت: درخواست با موفقیت انجام شد و سرور پاسخ مورد انتظار را به مرورگر داد.
3xx – تغییر مسیر: شما به مکانی دیگر منتقل میشوید. در این حالت پاسخ دریافت شده اما توسط نوع خاصی از تغییر مسیر، به مکانی دیگر منتقل میشوید. این حالت زمانی است که محتوای شما در موقعیت فعلی قرار نداشته و به مکان دیگری منتقل شده است. در این حالت درخواست شما به آن مکان هدایت میشود.
4xx – خطاهای سمت کاربر: این حالت نشان میدهد که مشکلی در مورد درخواست وجود دارد. در این حالت مشکل از جانب سرور نبوده و در واقع درخواستی که مرورگر فرستاده اشتباه است. معمولاً این مشکلات یا در سمت کاربر (مرورگر است) و یا در سمت وبسایت.
5xx – خطاهای سرور: شکست. درخواست ایجاد شده صحیح است و توسط مرورگر کاربر به درستی تعیین شده است اما به هر دلیلی، سرور توانایی پاسخ به آن را ندارد و نمیتواند پاسخ را کامل کند.
در هرکدام از این کدها، کدهای متفاوت و متنوعی وجود دارد که توسط سرور ارسال میشود. هر کد معنای خاص و منحصر به فردی دارد که در ادامه به طور مفصل به آن خواهیم پرداخت.
پیش از توضیح درباره کدهای خطا ابتدا اجازه دهید دو مورد روشن شود.
مورد اول: اهمیت این کدها برای سئو
مورد دوم: نحوه اطلاع از کدهای بازگشتی توسط سرور
چرا کدهای وضعیت HTTP و خطاهای آن برای سئو (بهینهسازی موتورهای جستجو) اهمیت دارد؟
رباتهای موتورهای جستجو به هنگام بررسی وبسایت شما (اصطلاحاً به این کار خزیدن یا Creawling میگویند)، این کدهای وضعیت را پایش میکنند. در برخی موارد این کدها در ایندکس شدن وبسایت شما، چگونگی رتبه بندی صفحات شما و نحوه درک موتور جستجو از سلامت وبسایت شما تأثیر دارد.
درک کدهای وضعیتی که بیشترین تأثیر را در سئو دارند برای هر سئوکار حرفهای و صاحب وبسایت مهم است.
به طور کلی، کدهای وضعیت HTTP در 1xx و 2xx سطح تأثیر زیادی در سئو شما نخواهند داشت. این گروه از کدها سیگنال میدهند که همه چیز در سایت شما همانطور که باید کار میکند و رباتهای موتور جستجو را قادر میسازند تا به راه خود ادامه دهند. به هر حال این کدها تأثیر مناسبی بر سئوی وبسایت دارند.
هر چه اعداد این کدها افزایش پیدا کند، بیشتر نشاندهنده خطاهای اساسی هستند و تأثیر آنها بر سئو بیشتر خواهد بود. پاسخهای 4xx و 5xx مانع از خزیدن رباتها و فهرست شدن صفحات شما خواهد شد. بسیاری از این خطاها نشاندهنده کیفیت پائین سرور یا وبسایت شما هستند و احتمالاً رتبه شما را پائین میآورند.
خطاهای 4xx بر روی تجربه بازدید کننده تأثیر میگذارد، بنابراین بلافاصله باید هر نوع تغییر در URLهای سایت خود را بررسی کرده و خطاهای سری 4xx را برطرف کنید.
همچنین برای صفحات خود یک صفحه 404 سفارشی ایجاد کنید و یا با استفاده از تغییر مسیر 301، آدرسهای قدیمی را به آدرسهای جدید منتقل کنید.
کدهای 3xx رابطه کمی پیچیده با سئو دارند. نکته اصلی که برای درک آنها باید در نظر داشت، تفاوت بین تغییر مسیرهای دائمی و موقت است که در بخش مربوطه به جزئیات آن خواهیم پرداخت.
پس از معرفی انواع کدها، در انتهای مطلب مهمترین کدها را که در سئو تأثیر بسزایی دارند معرفی خواهیم نمود.
بررسی کدهای وضعیت HTTP از طریق کنسول جستجوی گوگل
یکی از راهها برای پایش کدهای وضعیت HTTP در وبسایتتان، مراجعه به کنسول جستجوی گوگل است. در منوی گزارشات پوشش (Coverage) میتوانید وضعیت کدهای 3xx، 4xx و 5xx را ببینید.
در اولین بخش این صفحه 4 نوع از اطلاعات با رنگهای مختلف نمایش داده میشود:
- صفحاتی که کد خطا بازگرداندهاند.
- صفحات معتبر که دارای هشدار هستند.
- منابع معتبر.
- محتوایی که ایندکس نشده است.
در پائین این بخش، بخش دیگری (با عنوان جزئیات یا Details) وجود دارد که ممکن است خطاهایی از جنس 3xx، 4xx و 5xx در آنجا لیست شده باشد.
هر خطا با یک status یا وضعیت نمایش داده میشود.
خطاهای نوع 4xx و 5xx دارای وضعیت Error و خطاهای نوع 301 دارای وضعیت Excluded خواهند بود.
یک راه دیگر برای مشاهده کدهای وضعیت HTTP در همین ابزار، از طریق منوی URL Inspection است. اگر گوگل صفحهای از وبسایت شما را نتواند بازدید کند، آن را در این بخش خواهید دید.
ابزارهای دیگری هم برای مشاهده کدهای وضعیت HTTP وجود دارد:
- webfx
- visiospark
- و …
لیست و راهنمای کامل کدهای وضعیت HTTP
در حالت کلی، 63 کد وضعیت HTTP وجود دارد که توضیح همه آنها از حوصله این مطلب خارج است؛ لذا به ذکر مهمترین و متداولترین این کدهای خطا خواهیم پرداخت. کدهای مهم هر گروه در ادامه شرح داده شده است.
کدهای وضعیت 1xx
کدهای وضعیت کلاس 1xx یا اصطلاحاً 100، به این معنی است که درخواست شما به سرور ارسال شده و به هر دلیلی، سرور همچنان در حال کار بر روی آن است. این کدها لزوماً به معنی مشکل و یا ایراد نیستند، بلکه اطلاعات اضافی هستند تا به شما اطلاع رسانی کنند.
کد 100: ادامه ارسال Continue : این کد درباره نقل وانتقال بستههای اطلاعات همچون ارسال و دریافت فایل کاربرد دارند و حالت موقت پاسخ سرور را نشان میدهند.
مشتری باید به درخواست خود ادامه دهد. این پاسخ موقت برای آگاهی دادن به client استفاده میشود که قسمت اولیه درخواست دریافت شده است و هنوز توسط سرور رد نشده است.
مشتری یا Client باید با ارسال باقیمانده درخواست را ادامه دهد یا اگر درخواست قبلاً تکمیل شده است، این پاسخ را نادیده میگیرد. سرور باید پس از تکمیل درخواست، پاسخ نهایی را ارسال کند.
بهعبارتدیگر سرور به مرورگر میگوید که قسمت اول (هدر یا header) را دریافت کرده و مرورگر میتواند ادامه اطلاعات (بدنه یا body) را ارسال کند. این کد در مواقعی که حجم زیادی از دادهها فرضاً از طریق فرم و متد POST در حال ارسال باشد استفاده میشود.
مرورگر با ارسال Expect: 100-continue وضعیت سرور جهت آمادگی دریافت ادامه اطلاعات را بررسی میکند. اگر جواب کد 100 را دریافت کند، ادامه اطلاعات ارسال میشود. در غیر این صورت خطای 417 Expectation Failed دریافت میکند.
کد 101: تعویض پروتکلها Switching protocols : در این کد، مرورگر از سرور میخواهد تا پروتکلهای نقل وانتقال داده را تغییر دهد. درصورتی که سرور این تعویض را مفید یا ضروری بداند، از درخواست مرورگر پیروی خواهد کرد.
برای مثال برای تغییر پروتکل از HTTP 1/0 به HTTP 1/1 که تغییر مفیدی است توسط سرور تأیید میشود.
کدهای وضعیت 2xx
این دسته از کدها، بهترین نوع کدهای وضعیت HTTP هستند. پاسخهای دسته 200 به این معنی است که همه چیز دقیقاً همانطور که باید کار میکند. این سری کدها به این معنی است که درخواست ارسالی توسط مرورگر، با موفقیت دریافت، پردازش و پاسخ داده شده است. این دسته از کدها اشاره به بینقص بودن درخواست و عملکرد صحیح سرور دارند.
کد 200: پاسخ موفق (Everything is OK): کدهای استاندارد HTTP در وب با این عدد نشان داده میشوند. دریافت پاسخ 200 از سمت سرور به معنی این است که آدرس درخواستی یا عملیات موردنظر به طور کامل و موفقیتآمیز توسط سرور به انجام رسیده و یک ارتباط صحیح و بینقص بین کاربر و سرور برقرار است.
کد 201: ساخته شده (Created): در این حالت، سرور درخواست کاربر را با موفقیت دریافت کرده و یک منبع جدید در سرور و در پاسخ به درخواست کاربر ایجاد کرده است. ارسال این کد تنها زمانی صحیح است که سرور منبع یا آدرس و صفحه جدیدی ایجاد کرده باشد؛ در غیر این صورت کد 202 ارسال میشود.
کد 202: موافقت شده (Accepted): درخواست کاربر مورد پذیرش قرار گرفته است اما پردازش عملیات هنوز به طور کامل صورت نگرفته است. به همین دلیل تا پایان این فرایند نتیجه مشخص نیست. ممکن است درخواست پذیرفته یا رد شود.
کد 203: اطلاعات نامعتبر (Non-Authoritative Information): این کد وضعیت معمولاً به هنگام استفاده از پروکسی ظاهر میشود. در این حالت سرور پروکسی پاسخ 200 را از سمت سرور مبدأ دریافت کرده اما پاسخ را قبل از انتقال به مرورگر شما، اصلاحکرده است. در این حالت پاسخ ارسالی از یک منبع غیر معتبر (منبعی غیر از منبع اصلی) است.
کد 204: پاسخ بدون محتوا (No Content): این کد به این معنی است که سرور درخواست را با موفقیت پردازش کرده است اما قصد بازگشت محتوای خاصی را ندارد. معمولاً دریافت این پاسخ از سرور، بدین معنی است که آدرس درخواستی هیچگونه تغییری از آخرین درخواست تا لحظه کنونی نداشته است و فایل یا صفحه مربوطه به همان صورت قبلی نشان داده میشود.
کد 205: بازنشانی محتوا (Reset Content): همانند کد 204، این کد به معنی این است که سرور درخواست را دریافت کرده اما محتوا را برنمیگرداند. بااینحال، لازم است تا مرورگر شما اطلاعات فعلی را بازنشانی یا Reset کند که معمولاً منجر به ایجاد محتوای خالی میشود. این کد مخصوصاً برای پاک کردن اطلاعات فرمهای وب میتواند مورداستفاده قرار بگیرد.
کد 206: محتوای جزئی (Partial Content): در مواقعی که امکان توقف دانلود (resume) استفاده میکنید، این پاسخ مورداستفاده قرار میگیرد. با ارسال این کد توسط سرور، به بخشی از درخواست کاربر پاسخ داده میشود. در این حالت حتی پس از قطع ارتباط با سرور نیز امکان ادامه دریافت پاسخ میسر میشود. البته به شرطی که سرور از این امکان پشتیبانی کند.
کدهای وضعیت 3xx
تغییر مسیر یا Redirection فرآیندی است که برای برقراری ارتباط با منبع جدید، درخواست شما به آن مکان هدایت یا منتقل میشود. چندین کد وضعیت مربوط به تغییر مسیر وجود دارند که هرکدام مفهوم خاصی دارند.
نکته مهم این است که اگر در پاسخ به یک درخواست، بیش از 5 مرحله تغییر مسیر رخ دهد، مرورگر کاربر این مورد را حلقه بینهایت تشخیص داده و ارتباط را قطع میکند.
کد 300: انتخاب چندگانه (Multiple Choices): بعضی اوقات، ممکن است چندین منبع ممکن وجود داشته باشد که سرور بتواند توسط آنها به درخواست مرورگر پاسخ دهد. کد وضعیت 300 به این معنی است که مرورگر شما اکنون باید یکی از آنها را انتخاب کند. برای مثال ممکن است برای یک فایل صوتی، چند فایل با پسوندهای متفاوت قرار دهید تا مرورگر متناسب با اینکه کدام مورد را پشتیبانی میکند، یکی از آنها را دانلود و پخش کند.
کد 301: انتقال همیشگی (Moved Permanently): این حالت زمانی رخ میدهد که یک منبع، صفحه یا فایل برای همیشه از موقعیت قبلی خود به موقعیت جدید منتقل شده باشد. این کد از جمله حساسترین کدهای HTTP از نظر سئو است. دریافت این کد از سمت سرور به معنی تغییر آدرس یک صفحه وب است. مواقعی که به هر دلیلی تغییری در لینک صفحات وبسایت ایجاد میکنید، با استفاده از این کد میتوانید کاربران و رباتهای خزنده موتورهای جستجو را به آدرس جدید هدایت کنید.
کد 302: پیدا شد (Found): این به این معنی است که منبع درخواستی توسط مرورگر پیدا شده اما مرورگر باید موقتاً به آدرس دیگری منتقل شود (Moved Temporarily). این حالت با کد 301 تفاوت مهمی دارد. در اینجا انتقال بهصورت موقت است و آدرس اصلی یا قدیمی همچنان معتبر است و در دسترس خواهد بود.
کد 303: دیدن منبعی دیگر (See Other): این کد مشابه کد قبلی است اما تفاوت در اینجاست که این کد تأکید به دریافت اطلاعات از طریق متد GET است. در کد 303 آدرس فعلی و آدرسی که کاربر به آن هدایت میشود باید از طریق متد GET درخواست شوند که معمولاً هم به همین صورت است. صرفاً جهت اطلاع شما، باید گفت که در خواستهای HTTP به 4 مورد GET، POST، PUT و DELETE تقسیم میشوند.
کد 304: بدون تغییر (Not Modified): منبع درخواستی از آخرین باری که به آن دسترسی پیدا کردهاید اصلاح نشده است. این کد به مرورگر میگوید که منابع ذخیره شده در حافظه پنهان مرورگر (cache) تغییر نکردهاند. این مورد در افزایش سرعت بارگیری سایت بسیار اهمیت دارد. زیرا فایلهای بدون تغییر دیگر نیازی به بارگیری مجدد نخواهد داشت و لذا سرعت بارگیری وبسایت افزایش مییابد.
کد 305: استفاده از پروکسی (Use Proxy): این کد به معنی آن است که سرور برای دسترسی به منبع درخواستی باید از یک پروکسی استفاده کند. پروکسی سرور واسط بین کاربر و سرور اصلی است، در نتیجه به دلایل امنیتی برخی از مرورگرها مانند فایرفاکس و IE از این قابلیت پشتیبانی نمیکنند.
کد 306: تعویض پروکسی (Switch Proxy): مشابه کد 305 است و مربوط به درخواست تغییر پروکسی است. این کد در حال حاضر کاربردی ندارد.
کد 307: انتقال موقت (Temporary Redirect): همانند کد 302 است با این تفاوت که اجازه تغییر متد HTTP را نمیدهد. کد 307 مربوط به مواقعی است که منبع لینک اصلی، موقتاً در آدرس دیگری قابل دسترسی است. تفاوت این کد با کد 302 در این است که در اینجا برای انتقال، نیاز به تأیید کاربر داشته و انتقال خودکار انجام نمیشود. متدهای استفاده شده بین لینک اصلی و انتقالی نیز باید مشترک باشند.
کد 308: تغییر مسیر دائمی (Permanent Redirect): این کد مانند کد 301 یک انتقال دائمی است. اما اجازه تغییر متد HTTP را نمیدهد.
کدهای وضعیت 4xx
کدهای وضعیت HTTP گروه 4xx گروه مشکلسازی هستند. این کدها، از نوع کدهای خطای سمت کاربر و در ارائه درخواست به سرور هستند. در پاسخ به آن، سرور معمولاً و به طور پیش فرض، به همراه کدهای HTTP عباراتی در توضیح خطای رخ داده ارسال میکند و دائمی یا موقتی بودن مشکل به وجود آمده را نیز تعیین خواهد کرد.
کد 400: درخواست بد (Bad Request): در این حالت سرور نمیتواند پاسخ شیوه نگارش یا Syntax درخواست را درک کند. در این حالت مفهوم تقاضا کاربر برای سرور مفهوم نبوده و در نتیجه درخواست او نیز قابل پردازش نخواهد بود. از جمله مواردی که موجب این نوع خطا میشود، عبارت است از نقص در انتقال دادهها که ممکن است ناشی از قطع یا افت سرعت ارتباط باشد.
کد 401: دسترسی نامعتبر (Unauthorized یا Authorization Required): در این حالت اگر منبع هدف فاقد اطلاعات معتبر برای تأیید اعتبار باشد، چنین خطایی توسط سرور بازگردانده میشود. اگر احراز هویت اولیه HTTP را با استفاده از htpasswd تنظیم کرده باشید، ممکن است چنین خطایی را ببینید. در واقع این کد به معنی غیرمجاز بودن دسترسی است. ممکن است منبع درخواستی به طور کامل محدود نشده باشد، بلکه درخواست کاربر نیاز به تأیید مجوزهای دسترسی (مانند نام کاربری و کلمه عبور) داشته باشد. به همین دلیل سرور در پاسخ یک فرم از نوه WWW-Authentication را ارسال کرده و از کاربر میخواهد تا اعتبار خود را اثبات کند.
کد 402: نیاز به پرداخت (Payment Required): این کد فعلاً استفاده ندارد و برای استفاده بهعنوان بخشی از یک سیستم پرداخت دیجیتالی ایجاد شده است. بااین حال این طرح هرگز دنبال نشد. در عوض، سیستمعاملهای مختلف ازاین کد برای عدم انجام یک درخواست به خاطر اتمام موجودی مورداستفاده قرار میگیرد. موارد استفاده عبارتند از:
- در Google Developer API : شما به حد استفاده مجاز روزانه خود رسیدهاید.
- در Shopify : شما هزینه Shopify خود را پرداخت نکردهاید و فروشگاه شما به طور موقت غیر فعال شده است.
- در Stripe : پرداخت شما از طریق Stripe انجام نشده است، یا Stripe در تلاش است تا از پرداخت جعلی جلوگیری کند.
کد 403: دسترسی غیرمجاز (Access to that resource is forbidden.): وقتیکه کاربر درخواست منبعی از سرور دارد که دسترسی به آن برای همه کاربران محدود شده است، چنین کدی را دریافت میکند. این کد با 401 متفاوت است. در اینجا حتی با ورود توسط نام کاربری و رمز عبور نیز امکان دسترسی به آن منبع مقدور نخواهد بود. معمولاً مدیران سایتها، دسترسی مستقیم به فولدرها و نمایش فایلها بهصورت لیست را غیرفعال میکنند، در نتیجه وقتی آدرس یک فولدر را از آن سرور درخواست میکنیم، با خطای 403 مواجه خواهیم شد.
کد 404: منبع درخواستی پیدا نشد (The requested resource was not found): رایجترین نوع خطا، همین کد خطای 404 است. این کد به معنی آن است که آدرس، فایل یا منبعی که کاربر درخواست کرده وجود ندارد (یا ممکن است جابهجا شده باشد) و سرور اطلاعاتی از وجود یا عدم وجود آن ندارد. در این مواقع از تغییر مسیری برای این آدرس ایجاد شده باشد، کاربر به محل جدید منتقل میشود. در غیر این صورت، خطای 404 بازگردانده میشود. ممکن است منبع موردنظر در آینده مجدداً در این مسیر در دسترس باشد.
کد 405: متد غیرمجاز (Method not allowed.): این خطا زمانی رخ میدهد که سرور میزبانی وبسایت، از متد موردنظر پشتیبانی میکند، اما منبع هدف، از آن پشتیبانی نمیکند. در واقع متد استفاده شده توسط کاربر برای درخواست یک منبع از سرور مجاز نمیباشد. به فرض اگر از متد GET استفاده کنید، اما منبع اجبار به استفاده از متد POST داشته باشد این خطا دریافت میشود. یا استفاده از PUT در نوشتن یک فایل، برای فایلهایی که فقط حالت خواندنی دارند (read only)، در این حالت، معمولاً سرور در پاسخ، متد مجاز را نیز ارسال خواهد کرد.
کد 406: غیرقابلقبول (Not acceptable response): کد 406 ممکن است به دلیل وجود کاراکترهای غیراستاندارد در درخواست ارسالی رخ دهد. برخی از سرورها به دلایل امنیتی ممکن است این پاسخ را ارسال کنند. برای نمونه، ماژول mod_security در سرورهای آپاچی، از پذیرش برخی آدرسهای وب (که از نظر امنیت، سرور آنها را مشکوک تشخیص میدهد) خودداری کرده و پیغام Not Acceptable دریافت خواهید کرد.
کد 407: نیاز به مجوز پروکسی (Proxy Authentication Required): یک سرور پراکسی در حال استفاده است و قبل از ادامه کار، مرورگر شما باید احراز هویت شود. عملکرد این کد شبیه به کد 401 است، با این تفاوت که در اینجا کاربر یا واسط کاربری باید از طریق یک پروکسی اعتبار خود را اثبات کند.
کد 408: پایان حداکثر زمان درخواست (The server timed out waiting for the rest of the request from the browser): این کد هنگامی ایجاد میشود که سرور منتظر درخواست کامل از مرورگر باشد. بهعبارتدیگر، سرور درخواست کاملی را که توسط مرورگر ارسال شده است دریافت نکرده است. یکی از دلایل احتمالی میتواند ازدحام شبکه باشد که منجر به از بین رفتن بستههای داده بین مرورگر و سرور شود. کد 408 زمانی رخ میدهد که سرور در انتظار درخواست واسط کاربری است، اما هیچ پاسخی در زمان استاندارد دریافت نمیشود، به این صورت سرور کد 408 را ارسال میکند و واسط کاربر میتواند مجدداً و در دفعات بعدی درخواست خود را ارسال کند.
کد 409: تعارض (Conflict): کد وضعیت 409 به این معنی است که سرور نمیتواند درخواست مرورگر شما را پردازش کند زیرا با منبع مربوطه تداخل دارد یا به عبارتی در تضاد است. این اتفاق بعضی اوقات به دلیل چندین ویرایش همزمان رخ میدهد. این کد به معنی تداخل یا تعارض درخواست کاربر یا عملیاتی دیگر در سرور بر روی منبع موردنظر است. برای مثال وقتی دو کاربر بهصورت همزمان در حال ویرایش یک فایل باشند و هر دو همزمان آن را ذخیره میکنند، ممکن است چنین خطایی رخ دهد که باید بهصورت دستی این خطا را برطرف کرد.
کد 410: منبع موردنظر حذف شده (The requested resource is gone and won’t be coming back.): این کد مشابه کد 404 است، با این تفاوت که 410 نشاندهنده این است که عدم دسترسی به این فایل همیشگی است و منبع موجود در این فایل برای همیشه حذف شده است. کد 410 به موتورهای جستجو یا واسط کاربری میگوید که نباید مجدداً آن منبع را درخواست کنند، چراکه برای همیشه حذف شده است. البته در عمل موارد استفاده از این کد خیلی محدود است و تنظیم خطای 404 بهتر و اصولیتر است.
کد 411: عدم ارسال طول درخواست (Length Required): این بدان معناست که منبع درخواستی مستلزم این است که مشتری طول مشخصی را مشخص کند و آن را مشخص نکرده است. این کد به این معنی است که سرور از پاسخ به درخواست واسط کاربری خودداری میکند، چراکه در درخواست ارسالی اندازه یا طول محتوا (Content Length) وجود ندارد، در این حالت معمولاً واسط کاربری باید در سربرگهای HTTP درخواست خود آن را اضافه نماید.
کد 412: پیششرط رد شده (Precondition Failed): مرورگر شما شرایط خاصی را در عناوین درخواست خود درج کرده است و سرور آن مشخصات را ندارد. بهعبارتدیگر درخواست واسط کاربری موارد ارسال شده (به فرض متد استفاده شده) که منبع سرور از آن طریق در دسترس نیست و نتیجه بررسی اولیه سرور false شده است.
کد 413: درخواست خیلی طولانی (Payload Too Large یا Request Entity Too Large): درخواست شما بزرگتر از آن است که سرور بخواهد یا قادر به پردازش آن است. این خطا در حالتی رخ میدهد که طول رشته درخواست ارسالی، بیش از حد توان و انتظار سرور است؛ لذا ارتباط توسط سرور قطع خواهد شد. اما اگر این حالت موقتی باشد، معمولاً در پاسخ، سربرگ Retry After نیز ارسال میشود و واسط کاربری مجدداً و در دفعات بعدی میتواند درخواست خود را ارسال کند.
کد 414: آدرس وب خیلی طولانی (URI Too Long): این معمولاً نتیجه یک درخواست GET است که بهعنوان یکرشته پرسش (Query String) کدگذاری شده است که پردازش آن برای سرور بسیار بزرگ است.
کد 415: فرمت پشتیبانی نشده (Unsupported Media Type): این درخواست شامل یک نوع رسانه است که سرور یا منبع پشتیبانی نمیکند. کد 415 به دلیل ارسال فرمتی به همراه درخواست ارسالی (به فرض آپلود یک فایل یا تصویر) است که از نظر سرور قابل پذیرش نیست و سرور فرمت دیگری را پشتیبانی میکند.
کد 416: حد درخواستی رضایتبخش نیست (Range Not Satisfiable): درخواست شما برای بخشی از منابعی بود که سرور قادر به بازگشت آن نیست. این کد به دلیل ارسال درخواست قسمتی از یک منبع (به فرض بخشی از یک فایل) از سرور است، در حالی که آن قسمت وجود ندارد، به طور مثال کاربر قسمتی از یک فایل را درخواست میکند (به فرض در هنگامی که از ادامه دانلود استفاده میشود) که از حداکثر طول قسمتهای آن بیشتر است.
کد 417: انتظارات رد شده (Expectation Failed): سرور نمیتواند نیازهای مشخص شده در قسمت عنوان مورد انتظار درخواست را برآورده کند. کد 417 به معنی این است که سربرگهای HTTP ارسالی واسط کاربری با موارد موردنیاز سرور همخوانی ندارد یا سربرگی ارسال نشده است.
کد 418: من یک قوری هستم! (I’m a teapot): این کد توسط قوریهایی که درخواست تولید قهوه را دریافت میکنند، بازگردانده میشود. همچنین یک شوخی آوریل سال 1998 است.
کد 422: موجودی غیر قابل پذیرش (Unprocessable Entity): درخواست مشتری شامل خطاهای معنایی است و سرور نمیتواند آن را پردازش کند.
کد 425: خیلی زود (Too Early): این کد زمانی ارسال میشود که سرور تمایلی به پردازش درخواستی ندارد زیرا ممکن است دوباره اجرا شود.
کد 426: ارتقاء موردنیاز است (Upgrade Required): زمانی که سرور امکانات واسط کاربری را نیازمند ارتقاء تشخیص میدهد.
کد 428: پیششرط موردنیاز (Precondition Required): سرور نیاز به شرایطی دارد که قبل از پردازش درخواست مشخص شود.
کد 429: تعداد درخواستها خیلی زیاد (Too many requests): این مورد هنگامی توسط سرور ایجاد میشود که کاربر درخواستهای زیادی را در مدت زمان مشخصی ارسال کرده باشد (محدودکننده نرخ درخواست). این ممکن است گاهی اوقات به دلیل تلاش رباتها یا اسکریپتها برای دسترسی به سایت شما رخ دهد. در این حالت، ممکن است بخواهید URL ورود به سیستم وردپرس خود را تغییر دهید.
کد 431: درخواست قسمتهای سربرگ خیلی بزرگ (Request Header Fields Too Large): سرور نمیتواند درخواست را پردازش کند زیرا قسمتهای عنوان بسیار بزرگ هستند. این مورد نشاندهنده مشکل در قسمت سربرگ است. کد HTTP 431 در مواقعی کاربرد دارد که مرورگر در درخواست خود حجم زیادی از داده را در یک یا مجموع چند سربرگ ارسال میکند، در این شرایط ممکن است سرور خطای 431 Request Header Fields Too Large را برگرداند که در این صورت مرورگر میتواند یک یا چند سربرگ را حذف و مجدد درخواست را ارسال نماید، این کد وضعیت معمولاً در خصوص کوکیها کاربرد دارد.
کد 451: به دلایل قانونی در دسترس نیست (Unavailable For Legal Reasons): اپراتور سرور تقاضای منع دسترسی به منبعی را که درخواست کردهاید (یا مجموعهای از منابع از جمله منبع درخواستی شما) را دریافت کرده است.
کد 499: درخواست مشتری بسته شده است (Client closed request): هنگامیکه مشتری درخواست را میبندد درحالیکه Nginx هنوز در حال پردازش است، توسط NGINX بازگردانده میشود.
کدهای وضعیت 5xx
این دسته از کدها نیز جزو کدهای خطابه حساب میآیند. این دسته از کدها نشاندهنده مشکلی در سمت سرور هستند و معمولاً بدترین و آزاردهندهترین نوع کدهای خطاست.
کد 500: خطای داخلی سرور (Internal Server Error): این یک کد عمومی است که به معنای “خطای داخلی سرور” است. مشکلی در سرور رخ داد و منبع درخواستی تحویل داده نشد. این کد معمولاً توسط پلاگینهای شخص ثالث، کدهای PHP معیوب یا حتی قطع ارتباط با پایگاهداده تولید میشود. کد 500 به معنی وقوع یک خطای داخلی در سرور است و معمولاً به دلیل نقص تنظیمات یا انجام بهروزرسانی نرمافزاری یا سختافزاری رخ میدهد، تنظیم این کد در مواقعی که میخواهیم در سایت، تغییراتی اعمال کنیم که باعث از دسترس خارج شدن آن میشود، میتواند مفید باشد.
کد 501: غیر مجهز یا تکمیل نشده (Not Implemented): این خطا نشان میدهد که سرور از قابلیتهای موردنیاز برای انجام درخواست پشتیبانی نمیکند. این یک مشکل رایج در سرور است که باید توسط شرکت میزبانی رفع شود.
کد 502: خطای دروازه میانجی (Bad Gateway): این کد خطا به طور معمول به این معنی است که یک سرور از طرف دیگری پاسخ نامعتبر دریافت کرده است، مانند زمانی که پروکسی سرور در حال استفاده است. کد 502 به دلیل عدم دریافت پاسخ از سرورهای بالادست (upstream) است و سرور فعلی بهعنوان یک دروازه میانجی عمل میکند، در این حالت معمولاً بین سرور اصلی و واسط کاربری، دروازههای میانجی (Gateway) وجود دارند که قادر به تکمیل فرایند ارسال و دریافت پاسخ نیستند، این حالت معمولاً با چند بار تلاش مجدد از سمت کاربر رفع خواهد شد.
کد 503: سرویس خارج از دسترس (The server is unavailable to handle this request right now): درخواست در این زمان نمیتواند تکمیل شود. معمولاً وقتی بار سرور بیش از ظرفیت آن باشد رخ داده و سرور از دسترس خارج میشود. دریافت کد 503 به معنی غیر قابل دسترس بودن سرور به دلیل ترافیک زیاد (overload) یا انجام بهروزرسانی است، معمولاً این حالت موقتی بوده و پس از چند دقیقه یا چند ساعت رفع خواهد شد.
کد 504: پایان حداکثر زمان دروازه میانجی (The server, acting as a gateway, timed out waiting for another server to respond): این کدی است که وقتی دو سرور در پردازش یک درخواست مشارکت داشته باشند، برمیگردد و سرور اول در انتظار پاسخ سرور دوم است. کد 504 نیز بدین معنی است که سرور بهعنوان یک دروازه میانجی (Gateway) قادر به دریافت پاسخ از سرورهای بالادست (upstream) در حداکثر زمان مجاز نیست.
کد 505: نسخه HTTP پشتیبانی نمیشود (HTTP Version Not Supported): سرور از نسخه HTTP مورداستفاده مشتری برای درخواست خود پشتیبانی نمیکند.
کد 511: احراز هویت شبکه موردنیاز است (Network Authentication Required): این کد وضعیت هنگامی ارسال میشود که شبکهای که میخواهید از آن استفاده کنید قبل از ارسال درخواست شما به سرور، بهنوعی احراز هویت احتیاج دارد. بهعنوانمثال، ممکن است لازم باشد شما با شرایط و ضوابط یک نقطه اتصال Wi-Fi عمومی موافقت کنید.
کد 521: سرور وب از کارافتاده (Web server is down): این پیغام از خطاهای خاص Cloudflare است. این بدان معناست که مرورگر وب شما توانست با موفقیت به Cloudflare متصل شود، اما Cloudflare قادر به اتصال به سرور وب مبدأ نبود.
کد 525: خطای ارتباط SSL (SSL Handshake Failed): خطای 525 به این معنی است که ارتباط SSL بین دامنهای که از Cloudflare استفاده میکند و وب سرور مبدأ ازکارافتاده است.
مهمترین کدهای وضعیت HTTP از نظر سئو
اکنونکه با مهمترین کدهای وضعیت HTTP آشنا شدید، خوب است تا با مهمترین کدهای خطا از نظر سئو آشنا شویم.
کد وضعیت 200 : همه چیز خوبه!
این کد وضعیت ایدهآل شما برای عملکرد مناسب و عادی صفحات وبسایت شماست. بازدیدکنندگان، رباتها بهراحتی صفحات شما را بازدید میکنند. در این حالت همه چیز درست پیش رفته و نیازی نیست اقدام خاصی انجام دهید.
کد وضعیت 301 : تغییر مسیر دائمی
در هر زمان که لازم است یک URL به طور دائمی به آدرس دیگری هدایت شود، باید از هدایت 301 استفاده کنید. تغییر مسیر 301 به این معنی است که بازدیدکنندگان و رباتهایی که در آن صفحه قرار دارند به URL جدید منتقل میشوند. همچنین تمام اعتبار و ارزش سئوی لینک قدیمی به لینک جدید منتقل میشود؛ بنابراین برای تغییر مسیرها بهتر است از این نوع تغییر مسیر استفاده شود. برخلاف اظهارنظرهای گوگل مبنیبر اینکه تمام کدهای 3xx از نظر سئو یک رفتار و اثر را دارند، اما تحقیقات متخصصان سئو نشان داده است که این حرف اشتباه بوده و تغییر مسیر 301 بیخطر است؛ بنابراین هر نوع تغییر در URL های سایت را توسط این تغییر مسیر مدیریت کنید.
کد وضعیت 302 : تغییر مسیر موقتی
مانند کد قبلی، کاربران و رباتها به مسیر جدی منتقل میشوند، اما ارزش سئوی لینک قدیمی به لینک جدید تخصیص نخواهد یافت. استفاده از این نوع تغییر مسیر پیشنهاد نمیشود. این نوع تغییر مسیر به موتورهای جستجو اعلام میکنند که تغییر مسیر موقتی بوده و اعتبار سئو را به لینک جدید منتقل نکنند.
کد وضعیت 404: پیدا نشد!
فایل یا صفحه مورد نظر توسط سرور پیدا نشده است. در این حالت یا آدرس اشتباهی توسط کاربر درخواست شده، یا فایل و صفحه موردنظر حذف شده و یا فایل از آدرس فعلی جابهجا شده، اما هیچ تغییر مسیری اعلام نشده است. این کد مخربترین کد تجربه کاربری است. کاربران در این حالت ممکن است از وبسایت شما دلسرد شده و جستجوی مجددی در وبسایت شما نداشته باشند.
هر وبسایتی معمولاً دارای صفحاتی با کد خطای 404 است. این صفحات همیشه نباید هدایت شوند. گزینهها و راهحلهای دیگری هم وجود دارد. خیلیها بهاشتباه فکر میکنند که هر فایل محذوفی باید یک تغییر مسیر 301 داشته باشد. یعنی اگر فایل یا صفحهای حذف شد، URL آن را به یک صفحه دیگر هدایت کنید. خیلیها فکر میکنند این بهترین کار از نظر سئو است. اما در اکثر مواقع بدترین ایده ممکن است؛ چراکه میتواند کاربران و حتی رباتهای خزنده را دچار اشتباه کند. کاربر به دنبال فایل یا صفحهای با موضوع خاص است، اما به صفحهای با موضوعی متفاوت منتقل میشود. با این کار تجربه کاربری بدی به کاربر القا شده و اعتبار شما مخدوش خواهد شد.
اگر صفحاتی که خطای 404 تولید میکنند (صفحهی محذوف)، یک صفحه باارزش سئو بالا باشد که دارای محتوای ارزشمند و لینکهای زیادی بوده و ترافیک زیادی را به سمت وبسایت شما سرازیر میکند، بهتر است که از تغییر مسیر 301 استفاده کنید.
اگر غیر از این باشد، بهتر است خطای 404 بازگردانده شود. این باعث میشود که این URLها فهرست نشوند و به طور مکرر توسط موتورهای جستجو خزیده نشوند. در این حالت، مطابق راهنمای گوگل بهترین راه استفاده از یک صفحه 404 سفارشی است.
یعنی یک صفحه 404 اختصاصی ایجاد کنید که در مواقعی که صفحهای در دسترس نبود، کاربران و رباتها به این صفحه اختصاصی هدایت شوند.
به طور خلاصه:
- اگر صفحه به آدرس جدیدی منتقل شده، حتماً از 301 استفاده کنید.
- اگر صفحه حذف شده و ارزش بالایی ندارد، یک صفحه 404 اختصاصی به او نشان دهید.
- اگر صفحه حذف شده و ارزش بالایی دارد، از 301 استفاده کنید.
کد خطای 410: رفته و دیگر برنمیگردد!
کد 410، ماندگاری بیشتری نسبت به یک کد خطای 404 دارد. به عبارتی در مواقعی که یک URL برای همیشه از دست برود از این کد استفاده میشود. وقتی رباتها به چنین صفحهای برسند، دیگر این URL را مورد خزیدن قرار نمیدهند؛ بنابراین اگر چنین خطایی را مشاهده کردید، هر نوع لینک یا ارجاعی به این URL اشاره دارد را حذف کنید.
کد خطای 500: خطای داخلی سرور
در این حالت مقصر سرور است! به عبارتی مشکل از جانب کاربر یا درخواست او نیست. بلکه مشکلی در سرور موجب تولید این خطا شده است. این خطا، مانع دسترسی کاربر و ربات به وبسایت شما میشود؛ لذا ارزش پیوندهایی که ربات یا کاربر را به وبسایت شما کشانده، از بین میرود. موتورهای جستجو، وبسایتهایی را به کاربرانشان پیشنهاد میدهند که دائماً در دسترس باشند؛ لذا استفاده از یک سرور و هاست خوب اهمیت فوقالعادهای دارد.
کد خطای 503: سرویس در دسترس نیست
یک خطای رایج دیگر، بازهم از جانب سرور. در این حالت نیز سرور در دسترس نیست. این نوع خطا معمولاً به دلیل اضافه بار بر روی سرور بوده و به طور موقتی ایجاد شده و پس از مدتی کوتاهی رفع میشود. میزان اثر مخرب این کد کمتر از کد 500 است و به موتور جستجو میفهماند مشکل موقتی است.
خوب امیدواریم که بهخوبی با انواع کدهای وضعیت HTTP آشنا شده باشید. درک و فهم این کدها برای هر طراحی توسعهدهنده وب، متخصص سئو و مالک وبسایت ضروری است. در مطالب آینده، روش حل این خطاها نیز آموزش داده خواهد شد.
سلام
آموزش اینقدر کامل اونم تو وبلاگ های فارسی؟؟
یه دونه این ❤️
من تو خبرنامه عضو شدم
مطلب جدید منتشر کنید برام ایمیل میاد؟؟؟!
سلام. بله با عضویت در خبرنامه به محض انتشار محتوا یا آپدیت اون براتون ایمیل ارسال خواهدشد