DNS البدل والنطاقات الفرعية الديناميكية

في كل وقت فراغي (ها!) ، كنت أعمل على تغليف ملف خريطة الطيور البرية غير المحدودة تطبيق مع تطبيق مؤسسي يسمح للأشخاص بتصميم محدد مواقع المتاجر الخاصة بهم. لقد كان تطوير البرنامج الخاص بي كحل خدمة هدفي لسنوات قليلة ، وهذه فرصة رائعة.

هناك سمتان رئيسيتان على الرف أردت أن أضعهما في التطبيق يتضح أنهما يمثلان تحديًا كبيرًا لذلك أردت مناقشتهما في حال كنت تبحث عن نفس الشيء. كلتا الميزتين مألوفتان في جميع التطبيقات ، لكنني اكتشفت أنه على الرغم من أنهما مألوفان ، إلا أن العديد من مزودي الاستضافة لا يدعمهم في الواقع!

هدفي هو إنشاء تطبيق الخدمة الذاتية حيث يمكن للعميل تكوين المجال الفرعي الخاص به (http://فرعي.myapplicationdomain.com) ، أو حتى تطبيق المجال الفرعي الخاص بهم (http://فرعي.yourdomain.com). من أجل أن تكون ذاتية الخدمة ، فإنها تتطلب القدرة على برمجة الحل - لكنها تصل إلى بعض ملفات تكوين خادم اسم المجال المحظورة مع غالبية حسابات الاستضافة! تكمن المشكلة في دعم Wildcard DNS ، أي القدرة على توجيه أي مجال فرعي إلى مجال الخادم. بمعنى آخر ، تشير كل من test.domain.com أو www.domain.com أو any.domain.com إلى نفس المكان. بغض النظر عن ما تكتبه - ستنجح.

خارج التطبيقات ، هذه في الواقع ميزة رائعة جدًا لتمكين - حتى على مدونتك. سيسمح لأي شخص بالكتابة اى شى.yourdomain.com وإحضارهم إلى yourdomain.com. ستندهش من عدد الروابط السيئة التي تشير إلى مدونتك أو موقع الويب الخاص بك. يمكن أن يكون ذلك ضائعًا في حركة المرور إذا لم يدرك الشخص أنه خطأ في الارتباط.

تعمل العملية عن طريق إعادة كتابة النطاق الفرعي إلى سلسلة استعلام قبل أن يتم عرض الصفحة فعليًا بواسطة خادم الويب ... لذلك يتم تفسير subdomain.domain.com فعليًا بواسطة خوادم Apache على أنه domain.com؟what=subdomain من خلال استخدام ملف htaccess:

# استخراج جزء النطاق الفرعي من domain.com
RewriteCond٪ {HTTP_HOST} ^ ([^ \.] +) \. yourdomain \ .com $ [NC]
 
# تأكد من أن جزء النطاق الفرعي ليس www و ftp والبريد
RewriteCond٪ 1! ^ (www | ftp | mail) $ [NC]
 
# أعد توجيه جميع الطلبات إلى برنامج نصي php يمرر المجال الفرعي كوسيطة
RewriteRule ^. * $ http://www.yourdomain.com/٪1 [R، L]

هناك بعض المعلومات الإضافية حول الملفات التي تريد التعديل فيها V-nessa.net. لاحظ أن الملفات قد لا تكون موجودة في المكان المحدد بناءً على مزود الاستضافة الخاص بك. إن مزود الاستضافة الخاص بي هو في الواقع داعم جدًا لتدخل الأشخاص ، لكنهم يحذرون من أن القيام بذلك قد يؤدي إلى إبطال دعم العملاء. بالإضافة إلى "الاختراق على مسؤوليتك الخاصة" ، لن يقوموا بالتواصل معك لمساعدتك أيضًا.

سأعمل على تطوير بقية التطبيق بدلاً من التعلق بتطوير النطاق الفرعي. سأعطي في الواقع للكيك لقطة لاستخدامها كإطار عمل لها!

الملاحظة الأخيرة ، أنا مخترق قليلاً في هذه الأشياء. لقد أنعم الله على وجود فرق التطوير في عملي لمعرفة هذه الأشياء. بمفردي ، أنا خطير بعض الشيء. نقدر أي ردود فعل ومساعدة!

3 تعليقات

  1. 1

    رائع جدا. لقد استخدمت بالفعل خادم اسم المسجل الخاص بي مع wildcard DNS عندما كنت مع SliceHost ، وتم تكوين Apache لخدمة المجالات الفرعية غير المكونة من ملفات المجالات العادية.

    لقد كنت مفتونًا حقًا بإلقاء نظرة على إطار عمل CakePHP ، لكن الرابط الخاص بك ميت 🙂

    يمكن العثور على CakePHP في http://cakephp.ORG

    • 2

      كنت أفكر في الذهاب إلى طريق التسجيل أيضًا ، أليكس. هذه فكرة رائعة - ربما تكون أفضل طريقة للتعامل مع هذا.

      آسف على الرابط الميت - لقد تم إصلاحه الآن.

  2. 3

ما رأيك؟

يستخدم هذا الموقع نظام Akismet لتقليل الرسائل الضارة. تعرف كيف تتم معالجة بيانات تعليقك.