كيف اخصص صفحة 404 لمجلد

السلام عليكم

لدي مجلد اسمه api به ملف index و 404.php

اريد تخصيص 404.php كصفحة خطأ عند الدخول للاي امتداد داخل المجلد

مثلا

domain. com/api/fkdkkd

جربت هذا ولم يعمل

ErrorDocument 404 /error.php
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

من أجل القيام بتخصيص صفحة 404 لمجلدك، يمكنك استخدام ملف .htaccess إذا كنت تستخدم خادم ويب يعمل بـ Apach مثلا ففي هذا الملف، يمكنك تعيين ErrorDocument ليشير إلى ملف 404.php داخل المجلد الذي تريد.

يمكنك ذلك من خلال اتباع هاته النقاط، في ملف .htaccess، يمكنك إضافة السطر التالي:

ErrorDocument 404 /api/404.php

وهذا يعني أنه عندما يحدث خطأ 404 داخل مجلد api، سيتم توجيه المستخدم إلى الملف 404.php داخل المجلد api.

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

يوجد أكثر من طريقة، وإحداها هي بإضافة السطر التالي في ملف .htaccess في مجلد api:

ErrorDocument 404 /404.php

ويُستخدم التوجيه ErrorDocument 404 /error.php لتوجيه المستخدم إلى صفحة 404.php عند طلب أي ملف غير موجود على مستوى الخادم، وانت تريد فقط توجيه المستخدم إلى صفحة 404.php عند طلب ملف غير موجود داخل مجلد api.

الطريقة الأخرى هي باستخدام ملف index.php لتوجيه المستخدم إلى صفحة 404.php عند طلب أي ملف غير موجود.

حيث نكتب التالي في ملف index.php:

<?php


if (!file_exists($_SERVER['REQUEST_URI'])) {
  header('Location: 404.php');
  exit();
}


?>

لكي تستطيع فعل هذه الميزه يجب اولا يكون لديك هذه الصفحه دعنا نسميها 404.php ونضع هذه الكود البسيط لعرض رسالة الخطاء

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 Not Found</title>
</head>
<body>
    <h1>404 Not Found</h1>
    <p>The page you are looking for could not be found.</p>
</body>
</html>


ثما في ملف .htaccess ضع هذه الكود

ErrorDocument 404 /404.php

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php [L]
</IfModule>

بهذه الطريقه تكون استطعت ان تخصص صفحة الخطاء

يمكنك استخدام ملف htaccess إذا كنت تستخدم خوادم ويب تدعم Apache لقمت بمحاولة استخدام ErrorDocument يبدو هناك اسم ملف خاطئ يجب استخدام اسم الملف الصحيح الذي هو 404.php

استخدام الكود التالي في ملف .htaccess داخل المجلد الرئيسي api لتوجيه الطلبات ذات الامتداد غير الموجودة إلى 404.php

<IfModule mod_rewrite.c>

   RewriteEngine On

   RewriteBase /api/
   # إذا كان الملف أو الدليل موجودًا، لا تقوم بأي إعادة توجيه
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   # إعادة توجيه الطلبات ذات الامتداد غير الموجودة إلى 404.php
   RewriteRule ^([^/]+)$ 404.php [L]
</IfModule>