نمونه سایت ها و پورتال ها
Articles
Browse our article section
شرکت آریـــانـا » مقالات فناوری اطلاعات
گروه : برنامه نویسی دات نت  |   کد مطلب : 10   |  دفعات بازدید : 15043   |    نسخه چاپی   |    ایمیل به دوستان  

ایجاد زیر دامنه (Subdomain) به صورت داینامیک توسط برنامه نویسی دات نت

توسط : حسین رضیئی در 04 بهمن 1389
ایجاد زیر دامنه (Subdomain) توسط برنامه نویسی

این مقاله برای چه کسانی مفید خواهد بود؟
اگر شما یک برنامه نویس وب هستید که از تکنولوژی های دات نت استفاده میکنید و قصد دارید یک سرویس دهنده ی وبلاگ ویا یک جامعه ی مجازی بسازید که برای هر یک از کاربران خود یک زیر دامنه ایجاد کنید ویا علاقه مند هستید که گروه بندی های سایت خود را درون یک زیر دامنه بیارید ، این مقاله میتواند به شما کمک کند.

مواردی که هدف این مقاله نیست!
این مقاله قصد ندارد به شما برنامه نویسی آموزش دهد یا یک سرویس دهنده ی وبلاگ و یا یک جامعه ی مجازی برای شما ایجاد کند.

پیش نیاز ها:
برای پیاده سازی این روش و درک هرچه بهتر این مقاله نیازمند است خواننده با اصطلاحات و تکنولوژی های زیر آشنا باشد.
مقدمه:
ممکن است در سرویس دهندگان وبلاگ و یا جامعه های مجازی دیده باشید که به ازای هر کاربر یک زیر دامنه (Sub Domain) برای آن کاربر ایجاد شده است. اگر تعداد این دامنه ها ثابت و محدود باشد ایجاد زیر دامنه به صورت حقیقی امکان پذیر است. اما مواردی را در نظر بگیرید که تعداد کاربران زباد بوده و مشخص نمی باشد. از این رو ایجاد زیر دامنه به صورت حقیقی امری غیر منطقی می باشد.
این مقاله سعی دارد شما را با نحوه ی پیاده سازی  روش  ایجاد زیر دامنه به صورت داینامیک آشنا سازد.

روش کلی کار:
میبایست تمام زیر دامنه هایی که درخواست میشود را به برنامه(وبسایت) خود هدایت کنید و در برنامه ی خود دستورات خاص خود را برای نمایش اطلاعات مربوط با آن زیر دامنه بنویسید.
برای هدایت تمام زیر دامنه ها میبایست تنظیماتی را در DNS ایجاد کرده و یک IP اختصاصی داشته باشید.

Dedicated IP :
برای پیاده سازی این روش شما به یک IP اختصاصی دارید. به این منظور که درخواست هایی که برای یک زیر دامنه به IIS داده میشود را به IP مربوطه هدایت کنید.

تنظیمات DNS :
برای هدایت زیر دامنه ها به برنامه ی شما(وب سایت شما) باید یک رکورد در DNS ایجاد کنید تا زیر دامنه ها را به برنامه (وب سایت) خود هدایت کنید. برای این منظور به کنترل پنل میزبانی وب خود وارد شوید. سپس به قسمت DNS Settings رفته و Add Record را انتخاب کنید.
 

(شکل 1 - ایجاد یک رکورد جدید در DNS(کنترل پنلPlesk))
این رکورد میبایست از نوع A باشد(برای اطلاعات بیشتر به منبع مراجعه کنید).
در قسمت Enter domain name باید * را قرار دهید تا این رکورد برای تمامی زیر دامنه ها اعمال شود. اگر میخواهید زیر دامنه های خاص را داشته باشید به جای * (ستاره) نام زیر دامنه ی مورد نظر خود را بنویسید.
در قسمت Enter IP address آی پی اختصاصی خود را بنویسید.
رکورد جدید را ایجاد کنید. بعد از انجام این تنظیمات تمام زیر دامنه ها به برنامه (وبسایت) شما هدایت خواهند شد.
توجه : مجوز ایجاد تغییرات در DNS و درج یک رکورد جدید باید توسط هاستینگ به شما داده شده باشد.

هدایت زیر دامنه در برنامه(وبسایت):
تا ایجای کار زیر دامنه های درخواست شما را به برنامه هدایت کرده ایم . حال نوبت به آن رسیده تا در برنامه (وبسایت) خود این دامنه ها را گرفته و به مسیری خاص هدایت کنیم. برای این کار از قطعه کد زیر استفاده میکنیم.

string host, originalurl, newurl;
host = Request.Url.Host;
originalurl = Request.Url.PathAndQuery;
if (host.EndsWith(".YourDomin.com"))
{
newurl = "Default.aspx?subdomain=" + host.Replace(".YourDomin.com ", "");
HttpContext.Current.RewritePath(newurl);
}

تشریح قطعه کد بالا :
ابتدا آدرس درخواست شده را بررسی میکنیم. اگر آدرس درخواست شده زیر دامنه ای از دامنه ی اصلی بود دستورات داخل آکولاد اجرا خواهند شد.
 بعد از آنکه از وجود زیر دامنه اطمینان حاصل کردیم نام آن دامنه را به صفحه ای هدایت میکنیم.
این کار بوسیله Rewrite کردن URL انجام شده و کاربر متوجه این انتقال نخواهد شد.

این دستورات را در رویداد Application_BeginRequest (که اولین رویدادی است که بعد از درخواست کاربر رخ میدهد) بنویسید.
میتوانید یک HttpModules ایجاد کنید و کدهای بالا در این کلاس بنویسید اما ساده ترین راه اضافه کردن یک Global.asax به پروژه و نوشتن کد ها در آن است.

در انتها دستورات مورد نیاز برای بدست آوردن نام زیر دامنه که از طریق Query String به صفحه ی Default.aspx ارسال شده است را بنویسید.
شاد و پیروز باشید.