• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

مقاله : ساخت بی نهایت Subdomain از طریق برنامه نویسی

shahab_b

Registered User
تاریخ عضویت
31 ژانویه 2009
نوشته‌ها
163
لایک‌ها
5
ایجاد subdomain  از طریق برنامه نویسی یکی از جذاب ترین مسائل برنامه نویسی تحت وب است
سایتهای زیادی مانند blogfa  یا persianblog  از این سیستم استفاده می کنند بدین شکل که برای مثال کاربران سایت شما بتوانند آدرس مخصوص به خود را داشته باشند

برای مثال شما وب سایتی به نام http://iransite.com دارید و دوست دارید که کاربران ساییتون هر کدوم بتونن آدرس اختصاصی داشته باشند
http://parsa.iransite.com
http://yalda.iransite.com

یکی از راههایی که وجود داره ایجاد هر زیر دامنه در کنترل پنلتونه اما این کار بصرفه نیست و شما رو خسته می کنه چون که ممکنه در روز هزاران نفر وارد سایت شما بشن و درخواست ایجاد آدرس کنن
بجز مورد بالا مشکلات دیگه هم وجود داره مثل

- غیر قابل کنترل بودن از طریق برنامه نویسی
- به ازاء هر آدرس زیر دامنه باید یک دایرکتوری اختصاص داده بشه
- منبع سرور به شدت مورد استفاده قرار می گیره
- سازماندهی و کنترل دشوار میشه
- برای تعویض سرور به مشکلات زیادی بر میخورید
- استفاده ازWildcard هم هزینه های جانبی رو به همراه داره و همه سرورها انجام نمی دن
- کار برنامه نویس برای امنیت و یکپارچگی بسیار مشکل میشه
- ...

برای حل این مشکلات برخی از سرورها  خود امکاناتی رو به وجود آورده که براحتی برنامه نویس بتونه بی نهایت دامنه رو از طریق برنامه نویسی به وجود بیاره و حتی کاربران بتونن به راحتی از امکانات این سیستم استفاده کنن

از مزایای استفاده از این سرویس میتوان به
- قابل کنترل و دسترس بودن از طریق برنامه نویسی
- منبع سرور به هیچ وجه درگیر نمیشن و سرعت برنامه شما کاهش پیدا نمی کنه
- سازماندهی و کنترل به ساده ترین شکل ممکن امکان پذیره
- بی نیاز بودن به سرور اختصاصی و هزینه های سنگین آن
- بی نیاز بودن به Wildcard
- ...

حال از نظر برنامه نویسی کافی کد زیر رو در روت دایرکتوری سایت http://iransite.ir بنویسید

Request.Url.ToString();


در مثال ما اگه آدرس http://parsa.iransite.ir رو در آدرس بار وارد کنیم مقدار http://parsa.iransite.ir رو بر میگردونه با استفاده از روشهای برنامه نویسی میشه Subdomain یعنی همون parsa رو آدرس جدا کرد و این چیزی که یک برنامه نویس به اون احتیاج داره برنامه نویس می تونه تمام آدرس های رو از طریق برنامه بدست بیاره در asp.net برنامه نویس می تونه با استفاده از URLRewrite تمام Subdomain ها رو به یه دایرکتوری یا یک صفحه دینامیک ارجاع بده

شاید سوال شما این باشه چطور میشه URL ها رو کنترل کرد مثل blogfa یا persianblog این برای یک برنامه نویس کار راحتی
فرض کنید می خواهید یک سایت مثل blogfa بزنید که کاربران بتونن از اون طریق ثبت نام کنن و آدرس مخصوص خودشون رو داشته باشن کار راحتی کافی یه بخش ثبت نام توی سایتتون داشته باشید که ID یا همون URL ها رو توی یه دیتابیس ذخیره کنه در این حالت شما میتونید هر آدرس رو فقط یک بار برای یک نفر ثبت کنید مثلا کسی ID به نام parsa رو می خاد ثبت کنه شما ID به نام parsa رو در بانک اطلاعاتی تون ذخیره میکنید و ترتیبی می دید که اگه کسی دوباره خواست اون آدرس رو ثبت کنه نتونه خوب تا حالا فقط کار ثبت ID و منحصر به فرد کردن اون رو انجام دادیم با روش بالا هم روش دست یابی به subdomain رو گفتم بقیه بخش ها مثل مدیریت برای هر کاربر و ... هم که کار راحتی یعنی کلید یا متغییر صفحات شما میشه همون Subdomain ها که منحضر فرد هستند

حال کنترل Subdomain ها
کل Subdomian های ورودی از سه حالت بیشتر نیست یا قبلا ثبت شده که مراحل بالا رو توضیح دادم
یا Subdomian قبلا ثبت نشده یعنی Subdomain رو از url گرفتید توی بانک اطلاعاتی رو گشتید ولی نبوده در این حالت می تونید صفحه رو طراحی کنید که به کاربر بگه این چنین صفحه ای وجود نداره ! یا یه کار بهتر می تونید پیشنهاد ثبت نام این Subdomain رو بدید
و حالا حالت سوم فرض کنید کسی www رو وارد کرد یعنی این که مثلا نوشت http://www.iransite.ir در این حالت که www به عنوان یک زیر دامنه شد ! ولی شما می تونید به راحتی کاربر رو به آدرس http://iransite.ir یعنی بدون www ریدایرکت کنید
برای حذف یک کاربر هم کافی که شما ID که میشه همان subdomain مربوطه رو از بانک اطلاعاتی حذف کنید یا بلوک کنید !
توجه : در صورتی که این کد رو در سرورهای غیر از http://www.iransite.ir آزمایش کردید پیام خطای Internet Explorer cannot display the webpage رو دریافت خواهید کرد در صورتی که در سرورهای ایران سایت نام subdomain برای شما بر گشت داده می شود.
موفق باشید.
 http://www.iransite.com
 

shahab_b

Registered User
تاریخ عضویت
31 ژانویه 2009
نوشته‌ها
163
لایک‌ها
5
سلام
آموزش خاصی نداره باید سرور این امکانات رو بده
 

shahab_b

Registered User
تاریخ عضویت
31 ژانویه 2009
نوشته‌ها
163
لایک‌ها
5
تو دات نت ویندوز؟
چطور میخاید دسترسی داشته باشید؟
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
سلام
آموزش خاصی نداره باید سرور این امکانات رو بده
تنها امکاناتی که باید داشته باشیم فکر میکنم فقط یه dedicated ip هست
تا هر request روی اون ip ، رو به دامین منتقل کنه و با برنامه نویسی بشه اون رو هندل کرد :)
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
ایجاد subdomain  از طریق برنامه نویسی یکی از جذاب ترین مسائل برنامه نویسی تحت وب است
سایتهای زیادی مانند blogfa  یا persianblog  از این سیستم استفاده می کنند بدین شکل که برای مثال کاربران سایت شما بتوانند آدرس مخصوص به خود را داشته باشند

برای مثال شما وب سایتی به نام http://iransite.com دارید و دوست دارید که کاربران ساییتون هر کدوم بتونن آدرس اختصاصی داشته باشند
http://parsa.iransite.com
http://yalda.iransite.com

یکی از راههایی که وجود داره ایجاد هر زیر دامنه در کنترل پنلتونه اما این کار بصرفه نیست و شما رو خسته می کنه چون که ممکنه در روز هزاران نفر وارد سایت شما بشن و درخواست ایجاد آدرس کنن
بجز مورد بالا مشکلات دیگه هم وجود داره مثل

- غیر قابل کنترل بودن از طریق برنامه نویسی
- به ازاء هر آدرس زیر دامنه باید یک دایرکتوری اختصاص داده بشه
- منبع سرور به شدت مورد استفاده قرار می گیره
- سازماندهی و کنترل دشوار میشه
- برای تعویض سرور به مشکلات زیادی بر میخورید
- استفاده ازWildcard هم هزینه های جانبی رو به همراه داره و همه سرورها انجام نمی دن
- کار برنامه نویس برای امنیت و یکپارچگی بسیار مشکل میشه
- ...

برای حل این مشکلات برخی از سرورها  خود امکاناتی رو به وجود آورده که براحتی برنامه نویس بتونه بی نهایت دامنه رو از طریق برنامه نویسی به وجود بیاره و حتی کاربران بتونن به راحتی از امکانات این سیستم استفاده کنن

از مزایای استفاده از این سرویس میتوان به
- قابل کنترل و دسترس بودن از طریق برنامه نویسی
- منبع سرور به هیچ وجه درگیر نمیشن و سرعت برنامه شما کاهش پیدا نمی کنه
- سازماندهی و کنترل به ساده ترین شکل ممکن امکان پذیره
- بی نیاز بودن به سرور اختصاصی و هزینه های سنگین آن
- بی نیاز بودن به Wildcard
- ...

حال از نظر برنامه نویسی کافی کد زیر رو در روت دایرکتوری سایت http://iransite.ir بنویسید

Request.Url.ToString();


در مثال ما اگه آدرس http://parsa.iransite.ir رو در آدرس بار وارد کنیم مقدار http://parsa.iransite.ir رو بر میگردونه با استفاده از روشهای برنامه نویسی میشه Subdomain یعنی همون parsa رو آدرس جدا کرد و این چیزی که یک برنامه نویس به اون احتیاج داره برنامه نویس می تونه تمام آدرس های رو از طریق برنامه بدست بیاره در asp.net برنامه نویس می تونه با استفاده از URLRewrite تمام Subdomain ها رو به یه دایرکتوری یا یک صفحه دینامیک ارجاع بده

شاید سوال شما این باشه چطور میشه URL ها رو کنترل کرد مثل blogfa یا persianblog این برای یک برنامه نویس کار راحتی
فرض کنید می خواهید یک سایت مثل blogfa بزنید که کاربران بتونن از اون طریق ثبت نام کنن و آدرس مخصوص خودشون رو داشته باشن کار راحتی کافی یه بخش ثبت نام توی سایتتون داشته باشید که ID یا همون URL ها رو توی یه دیتابیس ذخیره کنه در این حالت شما میتونید هر آدرس رو فقط یک بار برای یک نفر ثبت کنید مثلا کسی ID به نام parsa رو می خاد ثبت کنه شما ID به نام parsa رو در بانک اطلاعاتی تون ذخیره میکنید و ترتیبی می دید که اگه کسی دوباره خواست اون آدرس رو ثبت کنه نتونه خوب تا حالا فقط کار ثبت ID و منحصر به فرد کردن اون رو انجام دادیم با روش بالا هم روش دست یابی به subdomain رو گفتم بقیه بخش ها مثل مدیریت برای هر کاربر و ... هم که کار راحتی یعنی کلید یا متغییر صفحات شما میشه همون Subdomain ها که منحضر فرد هستند

حال کنترل Subdomain ها
کل Subdomian های ورودی از سه حالت بیشتر نیست یا قبلا ثبت شده که مراحل بالا رو توضیح دادم
یا Subdomian قبلا ثبت نشده یعنی Subdomain رو از url گرفتید توی بانک اطلاعاتی رو گشتید ولی نبوده در این حالت می تونید صفحه رو طراحی کنید که به کاربر بگه این چنین صفحه ای وجود نداره ! یا یه کار بهتر می تونید پیشنهاد ثبت نام این Subdomain رو بدید
و حالا حالت سوم فرض کنید کسی www رو وارد کرد یعنی این که مثلا نوشت http://www.iransite.ir در این حالت که www به عنوان یک زیر دامنه شد ! ولی شما می تونید به راحتی کاربر رو به آدرس http://iransite.ir یعنی بدون www ریدایرکت کنید
برای حذف یک کاربر هم کافی که شما ID که میشه همان subdomain مربوطه رو از بانک اطلاعاتی حذف کنید یا بلوک کنید !
توجه : در صورتی که این کد رو در سرورهای غیر از http://www.iransite.ir آزمایش کردید پیام خطای Internet Explorer cannot display the webpage رو دریافت خواهید کرد در صورتی که در سرورهای ایران سایت نام subdomain برای شما بر گشت داده می شود.
موفق باشید.
 http://www.iransite.com

من فکر کردم قراره اینجا آموزش این کار رو ببینم :|

سلام
آموزش خاصی نداره باید سرور این امکانات رو بده

با htaccess خیلی راحت میشه اینکار رو کرد.

تو دات نت ویندوز؟
چطور میخاید دسترسی داشته باشید؟

منظورم دات نت نبود :D
با htaccess ه apache میشه!

تنها امکاناتی که باید داشته باشیم فکر میکنم فقط یه dedicated ip هست
تا هر request روی اون ip ، رو به دامین منتقل کنه و با برنامه نویسی بشه اون رو هندل کرد :)


آسمون بری! زمین بیای!

هر کاری هم که بکنی وقتی توی مرورگر بزنی: http://xxxxxxxxxxxx.domain.com

بهت ارور میده که can not find server و این چیزا....

سرویس وبلاگ بخوای بزنی! سرویس کوتاه کننده دامین بخوای بزنی! هر کاری این مدلی بخوای بکنی باید اول یه Record جدید به DNS هات اضافه کنی!

به این شکل:

کد:
*.domain.com

ستاره وقتی بذاری هر چیزی بجای ساب دامین بنویسی وصل میشی به هاست!

http://123456789.domain.com

http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.domain.com

http://3ma6ang.domain.com

و هر چی............

چون مقدار ( * ) ینی هر چی که بود.....




بعد از اینکار میری سراغ httpd.conf آپاچی که blablabla بلده.... :lol:

قبلا تو یه تاپیک همینجا نوشتم بقیشو.... حال ندارم بگم دیگه....

از blahblahblah بپرسید :p
 
Last edited:

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
تنها امکاناتی که باید داشته باشیم فکر میکنم فقط یه dedicated ip هست
تا هر request روی اون ip ، رو به دامین منتقل کنه و با برنامه نویسی بشه اون رو هندل کرد :)
اره...

همونجایی که Record اضافه میکنی به DNS سرورت IP رو هم باید داد...

کد:
*.domain.com    CNAME    68.63.366.26
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
بقیش هم ساده هست!

بدون HTACCESS هم میشه!

حالا اگه صفحه اول سایتتون عکسه یه مرغابی باشه,

ینی وقتی بزنید www.domain.com عکسه مرغابی میاد!

حالا وقتی اون رکورده *.domain.com رو اضافه کردید

اگه بزنید www.1333333333333333333333333.domain.com

یا هر ساب دامینه دیگه ای که وجود نداره,

باز هم همون مرغابی میاد!

ینی همه subdomain ها میان روی فایل INDEX که تو روته سایت هست!



حالا تو فایل ایندکس, با PHP یا ASP یا هر چی!

مقدار REQUEST URL رو میگیرید که میشه مثلا:

http://GojeFarangi.domain.com

یا

http://abnabat.HassanBlog.com

بد دیگه با split مسپلیت یا چیزای دیگه مقداره بین .domain.com و http:// رو مثلا پیدا میکنید که میشه:

abnabat

بد تو دیتاباس سرچ میکنید که نام کاربری abnabat مربوط به کی هست مثلا و مطالب مربوط به اون نام کاربری رو نشون میدید...

شد سرویس وبلاگ مثلا.... :D
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
بقیش هم ساده هست!

بدون HTACCESS هم میشه!

حالا اگه صفحه اول سایتتون عکسه یه مرغابی باشه,

ینی وقتی بزنید www.domain.com عکسه مرغابی میاد!

حالا وقتی اون رکورده *.domain.com رو اضافه کردید

اگه بزنید www.1333333333333333333333333.domain.com

یا هر ساب دامینه دیگه ای که وجود نداره,

باز هم همون مرغابی میاد!

ینی همه subdomain ها میان روی فایل INDEX که تو روته سایت هست!



حالا تو فایل ایندکس, با PHP یا ASP یا هر چی!

مقدار REQUEST URL رو میگیرید که میشه مثلا:

http://GojeFarangi.domain.com

یا

http://abnabat.HassanBlog.com

بد دیگه با split مسپلیت یا چیزای دیگه مقداره بین .domain.com و http:// رو مثلا پیدا میکنید که میشه:

abnabat

بد تو دیتاباس سرچ میکنید که نام کاربری abnabat مربوط به کی هست مثلا و مطالب مربوط به اون نام کاربری رو نشون میدید...

شد سرویس وبلاگ مثلا.... :D
از مثال های بسیار اینتراکتیو شما ممنون :دی
اما مثل ابنکه اعصاب معصاب تعطیله ها
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
بلد نیستم مرتب بنویسم اصلا :lol:
 

majidmjh

کاربر تازه وارد
تاریخ عضویت
4 دسامبر 2008
نوشته‌ها
2
لایک‌ها
0
سلام دوستان .

من به خاطر این بحث ها رفتم یه هاست ویندوزی و یه دامین گرفتم ! همه این کارهایی رو هم که گفتید کردم ولی برای من با هر ساب دامینی که وارد می شوم با صفحه IIS7 می رسه ! مسئولان فنی هم نتونستن کاری بکنن .

به نظر شما مشکل از کجاست ؟

دامین سایت : iDesktop.ir

برای مثال : mj.iDesktop.ir


تر و خدا کمک کنید ! هر کی هر چیزی حتی کوچیک به ذهنش می رسه , لطف کنه بگه شاید کارساز بشه . من پروژه دانشگاهم این رو برداشتم و کلی هم کلاس گذاشتم که بدون ساخت ساب دامین کار می کنه ! مرسی .
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
سلام دوستان .

من به خاطر این بحث ها رفتم یه هاست ویندوزی و یه دامین گرفتم ! همه این کارهایی رو هم که گفتید کردم ولی برای من با هر ساب دامینی که وارد می شوم با صفحه IIS7 می رسه ! مسئولان فنی هم نتونستن کاری بکنن .

به نظر شما مشکل از کجاست ؟

دامین سایت : iDesktop.ir

برای مثال : mj.iDesktop.ir


تر و خدا کمک کنید ! هر کی هر چیزی حتی کوچیک به ذهنش می رسه , لطف کنه بگه شاید کارساز بشه . من پروژه دانشگاهم این رو برداشتم و کلی هم کلاس گذاشتم که بدون ساخت ساب دامین کار می کنه ! مرسی .
Dedicated ip باید بخری و رو سایت ست کنی

بعد از این کار بهت ip میدن مثلا 10.10.10.10
این آی پی رو که بزنی باید سایتت بیاد
 

majidmjh

کاربر تازه وارد
تاریخ عضویت
4 دسامبر 2008
نوشته‌ها
2
لایک‌ها
0
Dedicated ip باید بخری و رو سایت ست کنی

بعد از این کار بهت ip میدن مثلا 10.10.10.10
این آی پی رو که بزنی باید سایتت بیاد

اوه اوه !!! من سرور رو از واسطه گرفتم واسطه بهم قول داده بود که برام یه همچین کاری رو بکنه ! پس به خاطر همین نتونسته تا الان !

ممنون Graveworm عزیز
 
بالا