سؤال

حاليًا في نصوص PHP الخاصة بي، أقوم بإعادة توجيه المستخدم إلى صفحة الخطأ 404 المخصصة التي لم يتم العثور عليها عندما يحاول/تحاول الوصول إلى محتوى غير موجود أو لا ينتمي إلى ذلك المستخدم.مثل ذلك:

header('Location: http://www.mydomain.com/error/notfound/');
exit;

أدرك أن استدعاء header() أعلاه يرسل رمز حالة إعادة التوجيه 302 افتراضيًا.

لكن ما لا أفهمه هو متى يجب أن أرسل رمز الحالة 404 غير موجود.قبل أن أقوم بإعادة توجيه المستخدم؟أو عندما أعرض /خطأ/غير موجود/ صفحة؟

شكرا لمساعدتك!

هل كانت مفيدة؟

المحلول

ويتعين عليك أن تفعل شيئا من هذا القبيل:

header("HTTP/1.0 404 Not Found");
include 'error.php';
die();

نصائح أخرى

لا تقم بتنفيذ أخطاء 404 كإعادة توجيه على الإطلاق.

ما تريد فعله حقًا هو إرسال رأس الحالة 404، ثم استبدال الإخراج الحالي بنص صفحة 404.

هناك طرق مختلفة للقيام بذلك ويعتمد الأمر إلى حد كبير على كيفية تنظيم موقعك.عادةً ما تقوم تطبيقات MVC بتسليم ذلك بمقدمة للأمام.لقد رأيت أنظمة أخرى تطرح استثناءً ثم يتولى معالج الاستثناء المسجل عرض صفحة 404.

وعلى أية حال، فإن الخطوات الصعبة هي

  1. تحديد المحتوى غير صالح
  2. الخروج من التنفيذ الحالي
  3. امسح أي مخرجات، في حالة وجودها.
  4. أرسل رأس الحالة 404
  5. أرسل محتوى صفحة 404

ولا يمكنك استخدام 404 و المكان: معا. الموقع صالحة فقط لبعض الردود (201، و3xx)

ولكن يمكنك إرسال صفحة مخصصة HTML كهيئة الاستجابة 404.

ومن php.net:

<اقتباس فقرة>   

وهناك نوعان من المكالمات رأس خاصة على حدة. الأول هو رأس الذي يبدأ ب السلسلة "HTTP /" (القضية ليست كبيرة)، والتي سيتم استخدامها لمعرفة رمز حالة HTTP لإرسال. على سبيل المثال، إذا قمت بتكوين أباتشي استخدام برنامج نصي PHP للتعامل مع طلبات الملفات المفقودة (باستخدام التوجيه ErrorDocument)، قد ترغب في التأكد من أن السيناريو الخاص بك يولد رمز الوضع الصحيح.

<?php
header("HTTP/1.0 404 Not Found");
?>

http://us.php.net/manual/en/function .header.php

ويجب عليك إرسال رمز حالة HTTP 404. المتصفحات و الزواحف فهم هذا. قد تحتاج أيضا إلى تضمين صفحة الخطأ أكثر ودية شرح ما حدث، بما في ذلك النموذج للبحث موقعك، وصلات SOUNDEX، وما إلى ذلك.

وA "إعادة توجيه" و "غير موجودة" هي مفاهيم مختلفة.

وأي ملف يمكن العثور منتديات http://www.mydomain.com/error/notfound/
أو
http://www.mydomain.com/not_exist.html

وصفحة " http://www.mydomain.com/not_exist.html " يجب أن يكون رأس 404 و "الصفحة لم يتم العثور على" محتويات.

وA quickfix يمكن أن يكون:

header("HTTP/1.0 404 Not Found");
readfile('http://www.mydomain.com/error/notfound/');
exit;

ولكن هذا يتطلب 2 طلبات اباتشي وهو نوع من سيئة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top