تبدأ كل استجابة HTTP برقم من ثلاث خانات، وهذا الرقم هو أقصر طريقة يخبرك بها الخادم بما حدث لطلبك. في معظم الأوقات لا ترى هذا الرقم أبداً: تُحمَّل الصفحة ويمضي المتصفح. ولا يظهر إلا عندما يسير شيء على نحو خاطئ، أي في اللحظة ذاتها التي تحتاج فيها إلى معرفة معناه.
لكن رموز الحالة ليست تشخيصاً فقط، بل تعليمات. فالرمز 301 يأمر محرك البحث بنقل مدخل الفهرسة نقلاً دائماً، والرمز 429 يخبر العميل بدقة كيف يتمهل، والرمز 503 يطلب من زاحف البحث أن يعود لاحقاً بدلاً من إسقاط صفحتك. إعادة الرمز الخطأ من أهدأ الطرق لفقدان الزيارات، لأن لا شيء ينكسر بصورة مرئية. يمر هذا الدليل على كل فئة، وعلى الرموز التي ستلقاها فعلاً، وعلى طريقة التحقق مما يعيده رابط ما في الواقع.
لماذا تهم رموز الحالة
تقرأ رموز حالتك أربع جهات، وكل واحدة تتصرف بناءً عليها بطريقة مختلفة:
- المتصفحات. تقرر هل تتبع تحويلاً، وهل تعيد استخدام نسخة مخزَّنة، وهل تعيد إرسال محتوى نموذج.
- محركات البحث. الرمز يقرر هل يُفهرس الرابط، أم يُدمج مع غيره، أم يُعاد لاحقاً، أم يُستبعد. وتقديم صفحة «غير موجود» لطيفة برمز
200هو الخطأ الكلاسيكي: يُقال للزاحف إن الصفحة موجودة فيُبقيها في الفهرس. - عملاء الـ API. العملاء المكتوبون جيداً يتفرعون حسب الرمز. الرمز
429أو503يستحق إعادة المحاولة، أما400فلا يستحقها أبداً، لأن إعادة إرسال طلب مُشوَّه تنتج الخطأ نفسه. - مراقبتك أنت. تُبنى نسب الأخطاء والتنبيهات على رموز الحالة في الغالب، لذا فإن خدمة تعيد
200والخطأ في المحتوى تكون غير مرئية للوحات قياسها نفسها.
الفئات الخمس
الخانة الأولى تخبرك بمن تقع عليه المسؤولية وما الخطوة التالية. إن لم تحفظ غير شيء واحد، فاحفظ هذا الجدول.
| الفئة | المعنى | ما ينبغي للعميل فعله |
|---|---|---|
1xx | معلوماتي: وصل الطلب والمعالجة مستمرة | الانتظار؛ وستراه نادراً |
2xx | نجاح: وصل الطلب وفُهم وقُبل | استخدام الاستجابة |
3xx | تحويل: المورد في موضع آخر | اتباع ترويسة Location |
4xx | خطأ عميل: الطلب كان خاطئاً | تصحيح الطلب، وعدم إعادته بلا تفكير |
5xx | خطأ خادم: الطلب سليم والخادم فشل | إعادة المحاولة بمهلة متزايدة |
الفصل بين 4xx و5xx هو الأهم عملياً، لأنه يجيب على السؤال الوحيد الذي يهم أثناء العُطل: هل الإصلاح من عندي أم من عندهم؟
الرموز التي ستلقاها فعلاً
هناك عشرات الرموز المسجلة، لكن يوم العمل يشمل خمسة عشر منها تقريباً. ورموز النجاح أبسطها. الرمز 200 OK هو الجواب العادي. والرمز 201 Created هو الرد الصحيح على طلب POST أنشأ شيئاً، وينبغي أن يحمل ترويسة Location تشير إلى المورد الجديد. والرمز 204 No Content يقول إن الطلب نجح وإنه لا يوجد عن قصد ما يُعاد، وهو الجواب الصحيح لطلب DELETE. والرمز 206 Partial Content هو ما يجعل التنقل في الفيديو واستكمال التنزيلات ممكنين.
التحويلات: 301 و302 و307 و308
تُسبب التحويلات ضرراً في تحسين محركات البحث أكثر من أي فئة أخرى، وذلك في الغالب لأن الصيغة الدائمة والصيغة المؤقتة تتبادلان مواضعهما.
301 Moved Permanently— تغيّر الرابط نهائياً. تنقل محركات البحث إشارات الترتيب إلى العنوان الجديد وتستبدل القديم في فهرسها في النهاية. استخدمه في نقل النطاقات، والانتقال من HTTP إلى HTTPS، وإضافةwwwأو إزالتها.302 Found— مؤقت. يظل الرابط القديم مفهرساً لأنك قلت إنه سيعود. استخدمه في اختبارات A/B، وفترات الصيانة القصيرة، والتوجيه الجغرافي الذي تنوي التراجع عنه.307 Temporary Redirect— مثل302، لكن مع ضمان الحفاظ على الطريقة والمحتوى. فطلبPOSTمحوَّل بالرمز307يصلPOST؛ وكانت بعض العملاء تاريخياً تحوِّل طلبPOSTالمحوَّل إلىGET.308 Permanent Redirect— المقابل الدائم للرمز307: نفس سلوك التخزين المؤقت في301مع الحفاظ على الطريقة.304 Not Modified— ليس تحويلاً في الحقيقة. إنه جواب على طلب شرطي ومعناه «نسختك المخزَّنة ما زالت صالحة»، ولهذا ينقل الموقع المضبوط جيداً بيانات أقل بكثير مما يوحي به حجم صفحاته.
قاعدتان: لا تسلسل التحويلات حيث تكفي خطوة واحدة، لأن كل خطوة تكلف زمن استجابة وميزانية زحف؛ ولا تحوِّل كل صفحة مفقودة إلى الصفحة الرئيسية. الثانية تبدو مرتَّبة وتقول للمستخدمين وللزواحف شيئاً غير صحيح.
أخطاء العميل: 400 و401 و403 و404 و429
تقول عائلة 4xx إن المشكلة كانت في الطلب نفسه. ويستحق التمييز بينها أن يُضبط، لأن العملاء يتصرفون تصرفاً مختلفاً مع كل واحد.
400 Bad Request— بنية مشوَّهة: JSON معطوب، أو حقل مطلوب مفقود، أو وسيط لا يمكن تحليله. لا يُعاد إرساله كما هو أبداً.401 Unauthorized— الاسم مُضلِّل؛ معناه غير موثَّق. لا بيانات اعتماد، أو بيانات لم يتمكن الخادم من التحقق منها. وينبغي أن يحمل ترويسةWWW-Authenticate.403 Forbidden— الخادم يعرف من أنت ومع ذلك لا يسمح لك. وإعادة تسجيل الدخول لن تفيد.404 Not Found— لا شيء موجود على هذا الرابط. والخادم لا يقول إن كان موجوداً في وقت ما.405 Method Not Allowed— الرابط موجود لكن ليس لهذه الطريقة. أضف ترويسةAllowتسرد الطرائق التي تعمل.409 Conflict— الطلب يتعارض مع الحالة الراهنة، كمفتاح مكرر أو إصدار قديم.410 Gone— المورد كان موجوداً وأُزيل عن قصد. تتخلى محركات البحث عن410أسرع من404، فهو الخيار الأفضل عندما تسحب محتوى عن عمد.422 Unprocessable Content— البنية قابلة للتحليل لكن القيم تفشل في التحقق. مفيد للفصل بين «لا أستطيع قراءة هذا» و«قرأته وهو خاطئ».429 Too Many Requests— تجاوزت حد المعدل. أرفقه دائماً بترويسةRetry-After؛ ومن دونها يعيد العملاء المحاولة فوراً فيزيدون الحمل سوءاً.
أخطاء الخادم: 500 و502 و503 و504
يعني الرمز من فئة 5xx أن طلبك كان معقولاً وأن الخادم فشل مع ذلك. والرموز الأربعة الشائعة تشير إلى طبقات مختلفة، وهذا ما يجعلها مفيدة فعلاً أثناء العُطل.
500 Internal Server Error— استثناء غير معالَج في التطبيق. الرمز العام الجامع، وأول ما تبحث عنه في السجلات.502 Bad Gateway— تلقى وسيط أو موزِّع حِمل استجابة غير صالحة أو فارغة من الخلفية. وغالباً يكون التطبيق خلف الوسيط قد تعطل أو لم يكن يستقبل.503 Service Unavailable— الخادم محمَّل أو في صيانة. وهو الرمز الوحيد في هذه العائلة الذي ينبغي أن تعيده عن قصد، مع ترويسةRetry-After، أثناء التوقف المخطَّط: فالزواحف تبقي الصفحة وتعود.504 Gateway Timeout— انتظر الوسيط الخلفية ثم استسلم. وهذا يشير إلى تابع بطيء وليس إلى تعطل.
أثناء انقطاع الخدمة، يخبرك الفرق بين 502 و504 هل مات تطبيقك أم أنه صار بطيئاً فقط، وهذا غالباً أسرع دليل متاح.
رموز الحالة وتحسين محركات البحث
تتعامل محركات البحث مع رمز الحالة كأنه القول الفاصل بشأن الرابط، وتثق به أكثر من أي شيء في محتوى الصفحة. ومن هذا تتبع أربع نتائج:
- أخطاء 404 «الناعمة» تهدر ميزانية الزحف. رسالة «الصفحة غير موجودة» مُقدَّمة برمز
200تُبقي رابطاً ميتاً في الفهرس ينافس صفحاتك الحقيقية. أعِد404أو410حقيقياً. - استخدم
301للنقل الدائم. استخدام302في نقل حقيقي يترك الرابط القديم مفهرساً ويوزع الإشارات على عنوانين. - اجعل سلاسل التحويل قصيرة. كل خطوة تضيف زمن استجابة، والزواحف لا تتبع إلا عدداً محدوداً قبل أن تتوقف. وجِّه الرابط القديم مباشرة إلى المقصد النهائي.
- أعِد
503أثناء الصيانة. الرمز503معRetry-Afterيطلب من الزاحف العودة. أما المهلة المنتهية أو الرمز500فيبدوان كموقع معطوب.
وللتحويلات علاقة بـ HTTPS أيضاً. فإذا كان تحويلك من http:// إلى https:// قائماً لكن الشهادة غير صالحة أو منتهية، يرى الزوار تحذير المتصفح قبل أن يصبح للتحويل أي معنى، لذا يجدر التحقق من الشهادة في الوقت نفسه بأداة فحص شهادة SSL.
كيف تتحقق من رمز الحالة
يخفي متصفحك الرمز عند التحميل الناجح، لذا عليك طلبه صراحة. ثلاث طرائق موثوقة:
- لوحة الشبكة في المتصفح. افتح أدوات المطور، أعِد التحميل، واقرأ عمود الحالة. وهذا يُظهر سلسلة التحويل كاملة، وهو ما لا يستطيعه رقم واحد.
curl -I https://example.com. يطبع طلبHEADسطر الحالة والترويسات دون تنزيل المحتوى. أضف-Lلتتبع التحويلات ورؤية كل خطوة.- مرجع قابل للبحث. عندما يكون الرقم بين يديك وتحتاج إلى المعنى والواجبات والأسباب المعتادة، يسرد مرجع رموز حالة HTTP كل رمز وما ينبغي عمله بشأنه.
وهناك أمران يُتحقق منهما إلى جانب الرقم نفسه. أولاً، اختبر الرابط ذاته الذي سيزوره المستخدم، بالشرطة المائلة في آخره أو بدونها، إذ كثيراً ما تُحلّان بطريقتين مختلفتين. وثانياً، إن كانت الاستجابة 429، فاقرأ قيمة Retry-After وتبيَّن هل يحترمها انتظار عميلك فعلاً؛ وتُحوِّل حاسبة حد المعدل أي حد إلى فواصل زمنية محددة.
أخطاء شائعة يجب تجنبها
- إعادة
200والخطأ في المحتوى. المراقبة والتخزين المؤقت والزواحف والعملاء جميعها تقرأ الرمز لا ملف JSON الخاص بك. وهذا أكبر خطأ في القائمة أثراً. - استخدام
302لنقل دائم. تبقى إشارات الترتيب على الرابط القديم، ولأشهر في بعض الأحيان. - تحويل كل أخطاء 404 إلى الصفحة الرئيسية. يخفي عنك الروابط المعطوبة ويُنتج أخطاء 404 ناعمة للزواحف.
- الرمز
403في موضع401. العميل الذي يتلقى403لن يحاول التوثيق، لأن403يقول إن التوثيق ليس هو المشكلة. - الرمز
429بلاRetry-After. يخمّن العملاء حينها، والتخمين المعتاد هو «فوراً»، وهو تماماً السلوك الذي وُضع الحد لمنعه. - ترك الصيانة تعيد مهلة منتهية. أعِد
503معRetry-Afterكي تحافظ على مدخلات الفهرسة. - سلاسل تحويل طويلة بعد النقل. كل عملية نقل تضيف خطوة؛ اجمعها في خطوة واحدة في المرة القادمة التي تلمس فيها القواعد.
تحقق من رموز حالتك
رموز الحالة أرخص وسيلة تشخيص على الويب: رقم واحد، بلا توثيق، وجواب لا لبس فيه عمّا إذا كان الرابط يعمل أو انتقل أو فشل. ابدأ بالتحقق مما تعيده صفحاتك المهمة، وتأكد من أن تحويلاتك دائمة حيث ينبغي ومؤقتة حيث ينبغي، واحرص على أن يعيد كل مسار خطأ رمزاً يطابق ما حدث فعلاً.
أدوات وأدلة ذات صلة:
- رموز حالة HTTP — مرجع قابل للبحث لكل رموز الاستجابة.
- حاسبة حد المعدل — تحويل الحد إلى فواصل آمنة وقيمة
Retry-After. - استعلام DNS — تأكد من أن النطاق يُحلّ قبل تنقيح استجاباته.
- فحص شهادة SSL — تحقق من الشهادة خلف تحويلك إلى HTTPS.
- إعادة التوجيه 301 و302: أيّهما تستخدم وماذا يرى SEO - أيّ إعادة توجيه تستخدم، وما أثر كلٍّ منهما في ترتيبك.
- 404 أم 410: ماذا يقول كلٌّ منهما لجوجل عن صفحة محذوفة - ماذا يقول كل رمز لجوجل عن صفحة حذفتها.
الأسئلة الشائعة
لماذا يكلّفني استخدام 302 في نقل دائم خسارة في الترتيب؟⌄
لأن الرمز 302 يخبر محركات البحث أن الرابط القديم سيعود، فتُبقيه مفهرساً وتترك عليه إشارات الترتيب. فيصير رابطك الجديد منافساً للقديم بدلاً من أن يرث منه، وقد يدوم هذا الانقسام شهوراً. أما الرمز 301 فهو التعليمة التي تنقل مدخل الفهرسة وتحوّل تلك الإشارات، وهذا ما يحتاجه النقل الدائم فعلاً.
كم عدد خطوات التحويل الذي يُعدّ كثيراً؟⌄
خطوة واحدة هي الهدف، واثنتان مقبولتان؛ وما بعد ذلك تدفع زمن استجابة في كل زيارة وتستهلك ميزانية زحف كانت ستذهب إلى صفحات حقيقية. فالزواحف لا تتبع إلا عدداً محدوداً من الخطوات قبل أن تتوقف، لذا قد تجعل سلسلة تراكمت عبر عدة عمليات نقل الصفحة النهائية غير قابلة للوصول. وفي المرة القادمة التي تلمس فيها القواعد، وجّه كل رابط قديم مباشرة إلى مقصده النهائي.
ماذا ينبغي أن تعيده الـ API عندما يبلغ العميل حد المعدل؟⌄
الرمز 429 Too Many Requests مع ترويسة Retry-After تحدد عدد ثواني الانتظار. وإعادة 403 أو 500 بدلاً منه تترك العملاء بلا سبيل إلى التصرف الصحيح، فيعيدون المحاولة فوراً ويعمّقون الحمل. وتحسب لك حاسبة حد المعدل فاصلاً معقولاً وقيمة Retry-After مناسبة.
كيف أعرف هل العطل في تطبيقي أم في تابع بطيء؟⌄
اقرأ الرمز الذي يعيده الوسيط عندك. فالرمز 502 يعني أنه تلقى استجابة غير صالحة أو فارغة من الخلفية، أي أن التطبيق خلفه تعطّل أو لم يكن يستقبل. والرمز 504 يعني أنه انتظر الخلفية ثم استسلم، وهذا يشير إلى شيء بطيء لا إلى شيء ميت. وهذا الرقم الواحد كثيراً ما يكون أسرع دليل متاح أثناء العُطل.
لماذا يُسمى 401 بـ Unauthorized وهو يعني غير موثَّق؟⌄
هذا خطأ في التسمية في المواصفة الأصلية لم يُصحَّح قط. وعملياً يعني 401 أن الطلب لم يحمل بيانات اعتماد أو حمل بيانات لم يتمكن الخادم من التحقق منها، وينبغي أن يحمل ترويسة WWW-Authenticate. أما 403 Forbidden فهو رمز الطلب الذي نجح توثيقه ومع ذلك غير مسموح به.
كيف أرى رمز حالة صفحة في متصفحي؟⌄
افتح أدوات المطور، وانتقل إلى لوحة الشبكة، وأعِد تحميل الصفحة، واقرأ عمود الحالة للمستند الرئيسي. ويُظهر هذا العرض أيضاً كل خطوة في سلسلة التحويل، وهو ما لا يستطيعه رمز واحد. ومن الطرفية يطبع curl -I سطر الحالة دون تنزيل المحتوى، وإضافة -L تتبع التحويلات.
خبرة عملية تزيد على 15 عامًا في تطوير الويب وأمنه. يركّز على أمن الويب العملي: الحفاظ على المواقع آمنة وموثوقة وسهلة التشخيص. وُجد BuildToolForge ليجعل هذه الفحوصات مجانية وخاصة ومفهومة. تعمل الأدوات في متصفحك كلما أمكن، ولا يُخزَّن أي شيء تُدخله في أداة.
كيف نكتب أدلتنا: يُكتب كل دليل من خبرة عملية، ويُراجَع وفق المعايير الرسمية، ويُختبر بأدواتنا على نطاقات حقيقية، ونحدّثه عندما تتغير المعايير أو الأدوات. وجدت خطأً؟ راسلنا على contact@buildtoolforge.com.