Apache HTTPD / أسس هوية الطلب والإعداد / الدرس 4
فضاء URI وDocumentRoot وAlias وهوية الملف
تتبع المسار دون خلط اسم URL بموقع القرص.
في هذه الصفحة
أهداف الدرس
- فصل Directory للملف وLocation للعنوان.
- شرح Alias وتفويض هدفه المستقل.
مسار URL ليس مسار القرص
ينتمي URI لفضاء الويب. قد يربطه الملف الثابت تحت DocumentRoot أو تختار Alias وإعادة الكتابة والوكالة والمعالج مورداً آخر. قد يخرج /docs/ خارج شجرة Parcel دون أن يصبح مخولاً تلقائياً. افصل الاستعلام عن المسار. لا تعني / جذر قرص المضيف، وتطابق Directory ملفات لا عنوان المتصفح حرفياً. يساعد رسم الهويتين على تحديد أي قسم سيطابق المورد فعلاً، خصوصاً إذا بدا المسار العام شبيهاً بمجلد موجود لكنه يمر بمعالج أو وسيط لا يقرأ ذلك الملف أصلاً.
اقرأ الربط والوصول مستقلين
يربط المقطع بادئة بمجلد Unix افتراضي ويعرض تفويض قراءة عامة له. لا يُحمّل أو ينشئ مجلداً أو يغير أذناً. يلزم دعم الوحدتين وإعداد فعلي مناسب. تهم الشرطة النهائية لعقد البادئة. لا يعني المثال كشف أي مجلد خارج الجذر أو تحديد سياسة ملفات خاصة أخرى. ينبغي أن يراجع مالك المحتوى ما وضعه في الهدف، لأن منح القراءة على مثال عام ليس بديلاً عن معرفة حساسية الملفات أو صحة المعالج الذي سيقدمها عند وصول طلب.
Alias "/docs/" "/lab/shared/docs/"
<Directory "/lab/shared/docs">
Require all granted
</Directory>
المسارات مدخلات مختبر معلنة. لا يثبت الوجود أو وصول النظام أو الرموز أو MIME أو سلامة المحتوى، ولا يحدث عمل خادم أو ملف.
لا يحسم الربط الوصول أو المعالج
راجع التفويض واجتياز الآباء والقراءة وضوابط المنصة وOptions والمعالج بعد معرفة المورد. قد يرفض أو يعالج ديناميكياً، وقد تؤثر الروابط وحالة الأحرف. لا تعالج 403 بتوسيع كل مجلد أو جعل الكتابة عامة. حدد العملية والطبقة بدليل المالك. ربما يلزم تصحيح الربط لا سلطة أعلى. يجب أن يميز التشخيص أن الخادم لا يجد المرشح الصحيح من أنه وجده ومنع خطوة قراءته؛ يبدوان للمستخدم فشلاً واحداً لكنهما لا يحتاجان العلاج نفسه.
اعرض تحويل بادئة معلنة واحداً
يربط Python الكامل مساراً تعليمياً مطبعاً بقاعدة واحدة، ولا يفك URL أو يوحده أو يحمي الاجتياز أو يحل ملفات أو يحاكي Apache. لا يحوي المدخل فواصل مرمزة أو نقاطاً أو استعلاماً أو صياغة منصة خاصة. استخدم عقد الخادم الحقيقي للسلوك والأمن. يوضح النموذج اختلاف الهدف وضرورة سياسته فقط. لا يجوز نسخ concatenation إلى مسار تطبيق يقبل مدخل عميل عشوائياً ثم الادعاء أنه يحصر القراءة داخل المجلد، إذ لا يقدم المثال أي برهان لهذا الحد.
uri = "/docs/guide.html"
prefix = "/docs/"
target = "/lab/shared/docs/"
assert uri.startswith(prefix)
mapped = target + uri[len(prefix):]
print(mapped)
print("mapping only; no file access")
/lab/shared/docs/guide.html
mapping only; no file access
يركب النص مثالاً آمناً معلناً فقط ولا يصلح مدقق أمان مسارات عاماً. لا يفتح ملفاً أو يطلب URL.
اتبع المسار المختار فعلاً
أثبت المضيف والقاعدة قبل تغيير المحتوى، ثم قارن URI والهدف والسياسة والمعالج بالأدلة. يطلب redirect عنواناً آخر من العميل، وتقدم Alias مورداً محلياً بالعنوان الأصلي؛ والوكالة مسار آخر. لا يصلح تبديل الجذر Alias تتجاوزه قصداً. ضيق الربط وافحص الشرطة والفروع بمسار مصرح منفصل. يوضح حفظ القرار سبب استمرار المحتوى نفسه بعد تغيير الجذر، ويمنع المراجع من تعديل دليل صحيح بينما الطلب يصل إلى هدف مختلف تحدده قاعدة أخرى في الإعداد الفعلي.
الأخطاء الشائعة وإصلاحها
تُعد Location قاعدة مجلد قرص.
- لماذا يحدث؟
- اختلط فضاء الويب والملف.
- كيف تصلحه؟
- استخدم الحاوية الموثقة لحد المورد.
- كيف تتجنب تكراره؟
- ارسم الهويتين منفصلتين.
يُفترض وصول Alias لمجرد المطابقة.
- لماذا يحدث؟
- حل الربط محل التفويض ووصول النظام.
- كيف تصلحه؟
- راجع السياسة وعملية القراءة أو الاجتياز المطلوبة.
- كيف تتجنب تكراره؟
- افصل دليل الربط والوصول.
يُستخدم التركيب النصي دفاع اجتياز إنتاجياً.
- لماذا يحدث؟
- عومل المثال المحدود كمحلل آمن.
- كيف تصلحه؟
- استخدم التطبيع المدعوم وسياسة الخادم لا حلاً مرتجلاً.
- كيف تتجنب تكراره؟
- صرح بالقيد وافحص الفعلي بمسار مصرح.
اختبر فهمك
1. هل يغير DocumentRoot هدف /docs/ في المثال بالضرورة؟
اعرض الحل المشروح
لا. تختار Alias هدفها للبادئة. راجعها وسياسة الهدف منفصلين؛ لا يعيد تغيير الشجرة الافتراضية كل ربط بديل.
2. لماذا قد يُرفض ملف رُبط صحيحاً؟
اعرض الحل المشروح
قد يمنع التفويض أو اجتياز الآباء أو القراءة أو المنصة أو نطاق آخر العملية. يحدد الربط مرشحاً ولا يمنح كل قدرة. حدد الطبقة ولا توسع ما لا يرتبط بالمشكلة.
أهم ما تعلمته
- افصل ربط URI وتفويض القرص.
- تختلف مسارات Alias وإعادة التوجيه والوكالة والمعالج.