سؤال

أنا أبحث للسماح للمستخدمين التحكم فرعي من التطبيق أنا اللعب مع الكثير مثل القاعده أين هو customusername.seework.com.

ما هو المطلوب DNS حد يسمح إنشاؤه بشكل حيوي و تكون متاحة على الفور.

و كيف توصي التعامل مع هذا المنطق من الموقع ؟ Htaccess حكم البحث عن دومين فرعي في DB?

هل كانت مفيدة؟

المحلول

الطريقة التي يمكننا القيام بذلك هو أن يكون 'التقاط جميع' لدينا اسم النطاق المسجل في DNS بحيث anything.ourdomain.com سوف نشير إلى الخادم.

مع Apache يمكنك إعداد مماثلة التقاط كل الخاص بك vhosts.ServerName يجب أن تكون واحدة ثابتة الاسم ولكن ServerAlias التوجيه يمكن أن تحتوي على نمط.

Servername www.ourdomain.com
ServerAlias *.ourdomain.com

الآن جميع المجالات من شأنه أن يؤدي عشقتك لمشروعنا.الجزء الأخير هو فك اسم المجال المستخدمة فعليا بحيث يمكنك معرفة اسم المستخدم في التعليمات البرمجية الخاصة بك, شيء مثل (PHP):

list( $username ) = explode( ".", $_SERVER[ "HTTP_HOST" ] );

أو روريترول كما سبق واقترح بصمت الخرائط user.ourdomain.com/foo/bar إلى www.ourdomain.com/foo/bar?user=user أو ما كنت تفضل.

نصائح أخرى

لا تقلق حول DNS و إعادة كتابة عنوان الموقع

سجل DNS سوف تكون ثابتة ، شيء من هذا القبيل:

*.YOURDOMAIN.COM A 123.123.123.123

اطلب من مزود DNS أن تفعل ذلك بالنسبة لك (إذا لم يتم ذلك بالفعل) أو تفعل ذلك بنفسك إذا كان لديك السيطرة على سجلات DNS الخاصة بك.هذا سوف تلقائيا وجهة كل ما تبذلونه من النطاقات الفرعية (الحالية والمستقبلية) في نفس ملقم HTTP.

بمجرد أن يتم ذلك, سوف تحتاج فقط إلى تحليل رأس المضيف على كل طلب http إلى الكشف عن ما اسم المضيف كانت تستخدم للوصول إلى البرامج النصية من جانب الخادم على ملقم http.

على افتراض أنك تستخدم ASP.NET هذا هو نوع من سخيفة سبيل المثال خطرت ولكن يعمل يدل على بساطة هذا النهج:

<%@ Language="C#" %>
<%
string subDomain = Request.Url.Host.Split('.')[0].ToUpper();
if (subDomain == "CLIENTXXX") Response.Write("Hello CLIENTXXX, your secret number is 33");
else if (subDomain == "CLIENTYYY") Response.Write("Hello CLIENTYYY, your secret number is 44");
else Response.Write(subDomain+" doesn't exist");
%>

الخدعة هو استخدام URL rewriting بحيث name.domain.com بشفافية الخرائط إلى شيء من هذا القبيل domain.com/users/name على الخادم الخاص بك.بمجرد البدء في هذا الطريق, انها تافهة إلى حد ما إلى تنفيذ.

كنت أبحث أن تفعل شيئا من هذا القبيل (www.mysite.com/SomeUser).

ما فعلته هو أنني تحريرها 404.shtml يشمل هذا الجانب الخادم تشمل (مباحث أمن الدولة) كود:

<!--#include virtual="404.php" -- >

ثم أنشأت الملف 404.php, حيث أنني تحليل URL للتحقق من اسم المستخدم و أظهرت معلومات من قاعدة البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top