في هذا الدرس 8تصفّح المواضيع
تعرّفنا في الدرس السابق على امتدادات الملفات ( و و و و) التي يتكون منها الموقع. غير أن أي موقع حقيقي لا يتألف من ملف واحد معزول، بل من عشرات أو مئات الملفات المترابطة داخل مجلدات منظمة. سنتعلم في هذا الدرس كيف يرتب المطورون المحترفون هيكل مجلدات المشروع، ولماذا يبحث خادم الويب تلقائياً عن ملف داخل المجلد الجذري، وكيف نتجنب فخ اختلاف حالة الأحرف بين ويندوز ولينكس، وكيف نربط بين الملفات باستخدام المسارات النسبية والمطلقة مع تأمين الخادم ضد ثغرات التلاعب بالمسارات.
قبل الغوص في التفاصيل الهندسية، استعرض جدول المصطلحات التقنية الأساسية لهذا الدرس:
| المصطلح بالعربية | المصطلح بالإنجليزية | النطق التقني | المعنى الهندسي المبسط |
|---|---|---|---|
| المجلد الجذري للموقع | دوكيومنت روت | المجلد الرئيسي الأعلى الذي يضم جميع ملفات ومجلدات الموقع المسموح لخادم الويب بتقديمها للزوار. | |
| ملف البداية الافتراضي | إندكس إتش تي إم إل | الملف الرئيسي الذي يبحث عنه خادم الويب ويعرضه تلقائياً عند طلب عنوان المجلد دون تحديد اسم ملف. | |
| التسمية بالشرطة السفلية الوسطى | كباب كيس | أسلوب تسمية قياسي للويب تُكتب فيه الكلمات بأحرف إنجليزية صغيرة مفصولة بشرطة عادية مثل about-us.html. | |
| مسار الملف | فايل باث | العنوان النصي الذي يحدد موقع الملف بدقة عبر تسلسل المجلدات مفصولةً بالشرطة الأمامية /. | |
| المسار النسبي | ريلاتيف باث | مسار يحدد موقع الملف المطلوب انطلاقاً من مكان الملف الحالي باستخدام رموز مثل ./ أو ../ بدون ذكر النطاق. | |
| التلاعب بمسار الملفات | باث ترافيرسال | ثغرة أمنية يستغل فيها المهاجم تسلسل ../ للخروج من مجلد الموقع العام وقراءة ملفات حساسة في النظام. |
يقع كثير من المبتدئين في خطأ وضع جميع صفحات الموقع وصوره وملفات تنسيقه في مجلد واحد مزدحم على سطح المكتب، أو الإشارة إلى صور محفوظة في مجلد التنزيلات (). إن تصميم هيكل مجلدات منظم ومستقل للموقع قبل البدء بكتابة الكود يحقق ثلاث فوائد هندسية كبرى:
- 1. سهولة النقل الكامل من جهازك إلى خادم الاستضافة (): عندما تكون جميع ملفات المشروع داخل مجلد واحد متكامل، يمكنك رفع المشروع بالكامل إلى أي خادم استضافة دون أن ينكسر رابط صورة أو ملف تنسيق واحد.
- 2. سهولة الصيانة ووضوح العناوين: إن فصل ملفات التنسيق في مجلد ، والسكربتات في ، والصور في يمكّن أي مطور من الوصول إلى الملف المطلوب خلال ثوانٍ.
- 3. العزل الأمني بين الملفات العامة والملفات الحساسة: يتيح التنظيم السليم وضع الملفات العامة فقط داخل مجلد العرض العام، مع إبقاء ملفات الإعدادات السرية (مثل ) خارج نطاق الوصول المباشر للزوار.
تأمل المخطط المعماري الآتي الذي يوضح الهيكلة القياسية لمجلدات وملفات مشروع ويب احترافي:
يرتكز كل موقع ويب على نقطتي انطلاق أساسيتين يعتمد عليهما المتصفح وخادم الويب معاً:
- 1. المجلد الجذري للموقع (): هو المجلد الأب الأعلى الذي يحيط بجميع ملفات ومجلدات الموقع العام (مثل مجلد على جهازك، أو مجلد و على خادم الإنتاج). وعندما يبدأ أي مسار في الويب بشرطة أمامية مفردة فإنه يشير دائماً إلى هذا المجلد الجذري للموقع وليس إلى كامل القرص الصلب في نظام التشغيل.
- 2. ملف البداية الرئيسي (): عندما يزور المستخدم عنوان موقع مثل دون كتابة اسم ملف في نهاية الرابط، يبحث خادم الويب تلقائياً داخل المجلد المطلوب عن ملف يحمل الاسم القياسي ويعرضه كصفحة رئيسية للمجلد.
عند إنشاء مشروع موقع ويب جديد، يُنصح بتوزيع الأصول الثابتة () حسب وظيفتها داخل مجلدات فرعية واضحة بأحرف صغيرة داخل المجلد الجذري:
- مجلد (أو ): يضم جميع ملفات التنسيق مثل .
- مجلد (أو ): يضم ملفات السكربتات التفاعلية مثل .
- مجلد (أو ): تُحفظ فيه الصور الفوتوغرافية والرسوميات المتجهة والأيقونات.
- مجلد : تُحفظ فيه ملفات الخطوط المحلية المضغوطة ().
- مجلد (أو مجلدات فرعية لكل قسم): لتنظيم الصفحات الفرعية الإضافية في المواقع متعددة الصفحات.
إليك النموذج القياسي لشجرة مجلدات مشروع ويب منظم ونظيف:
my-website/ (Project Root Folder)
├── index.html (Default Homepage Entry)
├── css/
│ └── main.css (Stylesheets)
├── js/
│ └── app.js (Client-Side Scripts)
├── images/
│ ├── logo.svg (Vector Brand Logo)
│ └── hero-banner.webp (Optimized Raster Image)
└── pages/
└── about.html (Secondary Page)
لأن كل اسم مجلد أو ملف داخل موقعك يتحول مباشرةً إلى جزء من عنوان الرابط () في المتصفح، يلتزم مطورو الويب بقواعد تسمية هندسية صارمة:
- 1. استخدام الأحرف الإنجليزية الصغيرة دائماً (): اكتب ولا تخلط بين الأحرف الكبيرة والصغيرة لتجنب أخطاء عدم تطابق المسارات على الخوادم.
- 2. منع المسافات الفارغة تماماً في أسماء الملفات: لا تقبل روابط الويب المسافات الفارغة؛ فإذا سمّيت ملفاً سيضطر المتصفح لتحويل كل مسافة إلى الرمز ليصبح الرابط مشوهاً وعرضة للخطأ ().
- 3. الفصل بين الكلمات بالشرطة العادية (): استخدم الشرطة العادية لفصل الكلمات مثل لأنها أوضح في القراءة وأفضل لمحركات البحث من الشرطة السفلية .
- 4. تجنب الرموز المحجوزة في الروابط: ابتعد تماماً عن رموز مثل و و و في أسماء الملفات لأن لها وظائف خاصة محجوزة في بنية عناوين الويب.
من أشهر المشكلات التي تفاجئ مطوري الويب عند رفع أول موقع لهم إلى الاستضافة: «جميع الصور كانت تعمل بشكل ممتاز على جهازي الشخصي، لكن فور رفع الموقع إلى الخادم اختفت بعض الصور وظهر خطأ !»
يكمن السبب الهندسي في اختلاف حساسية حالة الأحرف () بين أنظمة ملفات التشغيل:
- نظاما ويندوز () وماك ( الافتراضي) غير حساسين لحالة الأحرف: لا يفرّق نظام الملفات المحلي في ويندوز وماك بين و؛ فحتى لو اختلفت حالة الحرف الأول بين اسم الملف وبين الكود المكتوب في ، سيعرض جهازك الصورة دون أي اعتراض.
- خوادم لينكس () حساسة بشكل صارم لحالة الأحرف: تعمل الغالبية الساحقة من خوادم الويب العالمية بنظام لينكس الذي يعامل الحرف الكبير والحرف الصغير كرمزين مختلفين تماماً! فإذا كان الملف محفوظاً باسم وطلب الكود ، فسيرد خادم لينكس فوراً بخطأ .
جرّب المحاكي التفاعلي الآتي لمقارنة سلوك نفس الكود على ويندوز محلياً مقابل خادم لينكس في بيئة الإنتاج:
مسار الملف () هو العنوان التوجيهي الدقيق الذي يخبر المتصفح أو نظام التشغيل بسلسلة المجلدات التي يجب عبورها للوصول إلى الملف المطلوب، مثل .
وهناك قاعدة ذهبية حاكمة لكل مسار تكتبه في أكواد و و: الويب يستخدم دائماً الشرطة المائلة للأمام () ولا يستخدم أبداً الشرطة العكسية الخاصة بويندوز ():
- معيار الويب وأنظمة لينكس وماك — الشرطة الأمامية (): تُكتب جميع مسارات الويب والروابط باستخدام الشرطة الأمامية مثل .
- خطأ نسخ مسار القرص المحلي في ويندوز (): يعرض مستكشف ويندوز المسارات بالشرطة العكسية وبحرف القرص . إياك أن تنسخ مساراً محلياً مثل وتضعه في كود موقعك؛ لأن هذا المسار لا وجود له على خادم الاستضافة ولا على أجهزة الزوار، كما أن الرمز يُفسَّر في لغات البرمجة كرمز هروب ().
تأمل المخطط التوضيحي الآتي الذي يقارن عملياً بين اتجاهات الحركة في المسارات النسبية والمسارات المطلقة:
تنقسم المسارات المستخدمة لربط ملفات الموقع إلى ثلاثة أنماط عملية بحسب نقطة الانطلاق:
- 1. المسارات النسبية (): تنطلق من موقع الملف الحالي الذي يُكتب بداخله الكود (ولا تبدأ بشرطة ):
- في نفس المجلد ( أو ): يبحث عن الملف بجوار الملف الحالي مباشرةً.
- النزول إلى مجلد فرعي (): يدخل إلى المجلد الفرعي ثم يجلب الملف.
- الصعود إلى المجلد الأب (): الرمز يصعد خطوة واحدة للأعلى نحو المجلد الأب، وتكراره يصعد خطوتين للأعلى.
- 2. المسار النسبي للجذر (): يبدأ بشرطة أمامية مفردة ، فيتجاهل مكان الملف الحالي ويبدأ الحساب دائماً من قمة المجلد الجذري للموقع على الخادم.
- 3. المسار المطلق الكامل (): يبدأ بالبروتوكول والنطاق الكامل مثل ، ويُستخدم عند الربط بمواقع خارجية أو شبكات توزيع محتوى ().
لاحظ في الكود الآتي كيف تستدعي صفحة فرعية داخل ملفات الموقع بأنواع المسارات الثلاثة:
<!-- Inside /pages/about.html -->
<!-- 1. Relative path stepping UP one folder (../) to reach /css/main.css -->
<link rel="stylesheet" href="../css/main.css">
<!-- 2. Root-relative path starting from the website Document Root (/) -->
<img src="/images/logo.svg" alt="CloseTag Logo">
<!-- 3. Full absolute URL pointing to an external resource -->
<a href="https://developer.mozilla.org/">MDN Web Docs</a>
إن فهمك لآلية عمل الرمز في الصعود إلى المجلد الأب يفسر لك مباشرةً واحدة من أخطر الثغرات الأمنية في تطبيقات الويب، وهي ثغرة التلاعب بمسار الملفات ():
- كيف تنشأ الثغرة برمجياً؟ لنفترض أن موقعاً يوفر رابطاً لتنزيل الكتيبات مثل ، وأن كود الخادم يدمج قيمة المعامل مباشرةً مع مسار المجلد دون فحص.
- استغلال تسلسل الصعود : إذا أرسل مهاجم القيمة أو ، فإن تكرار سيجعل المسار يخرج من مجلد التنزيلات العام صعوداً إلى ملفات النظام الحساسة أو ملف كلمات المرور وإعدادات البيئة ()!
- كيف تحمي الخوادم نفسها من ثغرة ؟
- 1. استخدام معرّفات أو قائمة بيضاء (): ربط الملفات المسموح بتنزيلها بمعرّفات رقمية أو أسماء محددة مسبقاً بدلاً من تمرير مسارات مفتوحة في الرابط.
- 2. تجريد المسار والاكتفاء بالاسم الأساسي (): استخلاص اسم الملف المجرد وحظر أي مدخلات تحتوي على أو أو .
- 3. التحقق من المسار الحقيقي بعد التحليل (): مطابقة المسار الفعلي النهائي والتأكد برمجياً من أنه يقع حصراً داخل المجلد المسموح قبل قراءة أي ملف.
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعلّمنا في هذا الدرس أهمية تنظيم ملفات ومجلدات الموقع، ودور المجلد الجذري () وملف البداية ، وقواعد التسمية القياسية بصيغة ، وسبب ظهور أخطاء نتيجة حساسية حالة الأحرف على خوادم لينكس مقارنةً بويندوز وماك، وكيفية كتابة المسارات النسبية ( و) والمسارات الجذرية والمطلقة بالشرطة الأمامية ، وطرق الحماية من ثغرات . الخطوة التالية: انتقل الآن إلى الدرس التالي محررات الأكواد وبيئات التطوير المتكاملة () لنتعرف على البرامج الاحترافية التي تفتح بها مجلد مشروعك وتكتب بداخلها أكواد الويب بكفاءة!
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات12
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Document Root (Website Root Folder) المجلد الجذري للموقع
- المجلد الرئيسي الأعلى للموقع الذي يقدم منه خادم الويب الملفات العامة للزوار.
- للمراجعة
- 02 Directory Index (index.html) ملف البداية الرئيسي index.html
- الملف الافتراضي الذي يبحث عنه خادم الويب تلقائياً ويعرضه عند زيارة رابط مجلد دون تحديد اسم ملف.
- للمراجعة
- 03 Directory Listing (Autoindex) فهرسة وسرد محتويات المجلد
- عرض الخادم لقائمة بجميع ملفات المجلد عند غياب ملف index.html، ويجب تعطيله دائماً في خوادم الإنتاج لأسباب أمنية.
- للمراجعة
- 04 Kebab-Case Naming التسمية بصيغة kebab-case
- كتابة أسماء الملفات والمجلدات بأحرف إنجليزية صغيرة مع الفصل بين الكلمات بشرطة عادية مثل hero-banner.webp.
- للمراجعة
- 05 Case Sensitivity حساسية حالة الأحرف الكبيرة والصغيرة
- التفريق الصارم بين الأحرف الكبيرة والصغيرة في أسماء الملفات (كما في خوادم لينكس على عكس ويندوز وماك).
- للمراجعة
- 06 Percent-Encoding (%20) ترميز المسافات والرموز في الرابط
- تحويل المسافات والرموز غير المسموحة في الروابط إلى صيغة مرمّزة مثل %20 للمسافة الفارغة.
- للمراجعة
- 07 File Path مسار الملف
- العنوان النصي الذي يحدد تسلسل المجلدات مفصولةً بالشرطة الأمامية (/) للوصول إلى ملف معين.
- للمراجعة
- 08 Relative Path المسار النسبي
- مسار يُحسب انطلاقاً من موقع الملف الحالي الذي يُكتب بداخله الكود دون ذكر النطاق.
- للمراجعة
- 09 Parent Directory Notation (../) رمز الصعود للمجلد الأب ../
- نقطتان متبوعتان بشرطة أمامية (../) للانتقال مستوى واحداً للأعلى نحو المجلد الأب.
- للمراجعة
- 10 Root-Relative Path (/...) المسار النسبي للجذر
- مسار يبدأ بشرطة أمامية مفردة (/) ويُحسب دائماً من قمة المجلد الجذري للموقع بصرف النظر عن مكان الصفحة الحالية.
- للمراجعة
- 11 Absolute Path / Full URL المسار المطلق الكامل
- عنوان ويب كامل يتضمن البروتوكول واسم النطاق والمسار الكامل للمورد.
- للمراجعة
- 12 Path Traversal (Directory Traversal) ثغرة التلاعب بمسارات الملفات
- هجوم أمني يستغل تسلسل ../ في المدخلات غير المفحوصة للخروج من المجلد المخصص وقراءة ملفات حساسة على الخادم.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات5
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 URL URL
- Uniform Resource Locator
- محدد موقع الموارد الموحد الذي يمثل عنوان أي صفحة أو ملف على الويب.
- للمراجعة
- 02 ASCII ASCII
- American Standard Code for Information Interchange
- مجموعة المحارف القياسية الأساسية التي يُنصح بالالتزام بها في تسمية ملفات ومجلدات الويب.
- للمراجعة
- 03 NTFS NTFS
- New Technology File System
- نظام الملفات الافتراضي في ويندوز، ويتعامل مع أسماء الملفات دون حساسية لحالة الأحرف.
- للمراجعة
- 04 APFS APFS
- Apple File System
- نظام الملفات الحديث في أجهزة ماك، وهو غير حساس لحالة الأحرف في إعداده الافتراضي.
- للمراجعة
- 05 CDN CDN
- Content Delivery Network
- شبكة توصيل المحتوى الموزعة التي يُشار إلى ملفاتها عادةً عبر مسارات مطلقة كاملة.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
أنشئ مجلداً جذرياً باسم my-portfolio يضم ملف index.html وثلاثة مجلدات فرعية بأحرف صغيرة (css/ وjs/ وimages/)، واربط ملف التنسيق والصورة بداخل الصفحة.
-
أنشئ صفحة فرعية داخل pages/about.html واكتب بداخلها مساراً نسبياً يصعد للمجلد الأب href="../css/main.css" ورابط عودة للصفحة الرئيسية href="../index.html".
-
راجع مجلد صور أو ملفات مشروع لديك وحوّل أي اسم يحتوي على مسافات أو أحرف كبيرة (مثل "My Banner 01.PNG") إلى صيغة kebab-case القياسية ("my-banner-01.png").
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.