التعامل مع الروابط التي تحتوي على رمز النقطه

18 فبراير 2016     537 مشاهدة    0 تعليق
تم النشر في #Urls 

كما هو من المتعارف عليه ان الروابط التشعبية ممكن أن تحتوي على أرقام وحروف ورموز, لكن لو حاول الواحد أن يضيف رمز النقطه (.) على رابط موقعه المبني بتقنية الـ ASP.NET فإن الـ IIS سيظر لك رسالة الخطأ 404 أي أن المصدر الذي تحاول الوصول إليه غير موجود.

فبصورة إفتراضيه يعتبر الـ IIS أي رابط يحتوي على رمز النقطه أنه ملف, ولكن المطور يقصد به كلمة معينه في الرابط وهذا هو أساس الإختلاف الذي لا يستطيع الـ IIS معالجة مثل هذه الأنواع من الروابط. وقد مرت علي هذه الحالة شخصياً في موقعي فأحببت أن اشارككم بعض الحيل الذي تمكنك من تجاوز هذا الإستثناء ومعالجة الرابط مثل أي رابط آخر.

الخيار الأول: إضافة الرمز في نهاية "/" الرابط

يعتبر هذا الخيار الأبسط فبإضافة رمز "/" إلى نهاية الرابط, يتم التعامل مع الرابط من قبل الـ IIS بدون أي إشكالية لأنه يعتبر مسار وليس ملف معين. فبالتالي يمكن إضافة الـ "/" في الأماكن التي نتوقع أن يظهر فيها رمز النقطة في الروابط, لكن هذا الحل لا يعتبر مجدي وذلك لأن الحل المقترح تم إضافته في مصدر الموقع, فلو جرب المستخدم أن يدخل الرابط بنفسه ونسى إضافة الـ "/" نعود للمشكلة الأساسية من جديد.

الخيار الثاني: إضافة runAllManagedModulesForAllRequests="true” في ملف الـ Web.Config

يمكننا من تجاوز مشكلة النقاط وذلك بإضافة الإعدادات التالية في ملف الـ Web.Config

<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

لكن هذا الخيار ممكن أن يؤثر نوعاً ما على أداء الموقع, كيف؟!! أترك الموضوع للإطلاع.

الخيار الثالث: إضافة قاعدة لإعادة صياغة الرابط في الـ IIS

يتعبر هذا الخيار من أفضل الخيارات فيمكننا عبر الـ IIS من إضافة قاعدة لإضافة الرمز "/" وهذا سيحل مشكلة الخيار الأول في حال نسي المستخدم إضافة الرمز. فنختار الخيار Url Rewrite من ثم Add Rule(s) وبعدها من خيارات الـ Search Engine Optimization أختر Append or remove trailling slash symbol ومن ثم أنقر زر موافقة للتأكيد.

بعدها ستلاحظ أن الموقع يستجيب لأي رابط يحتوي على رمز النقطة (.) سوى تمت إضافة رمز الـ "/" أم لا.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك