آموزش ساخت و کار با subdomain در حالت لوکال هاست
یکشنبه 15 اردیبهشت 1392آموزش ساخت و کار با subdomain در حالت لوکال هاست <br/> برای پروژه ای نیاز بود تا از sub-domain استفاده شود. نحوه کار بدین صورت بود که اطلاعات باید بر اساس شهرها بارگذاری میشد؛ برای مثال اگر کاربر آدرس tehran.mysite.com را وارد کرد، اطلاعات مربوط به شهر تهران بارگذاری شود و برای سایر شهرها هم به همین ترتیب. در سرور که روش کار و ساخت ساب دومین کاملا مشخص است. اما برای لوکال باید به چه ترتیب عمل شود؟
برای پروژه ای نیاز بود تا از sub-domain استفاده شود. نحوه کار بدین صورت بود که اطلاعات باید بر اساس شهرها بارگذاری میشد؛ برای مثال اگر کاربر آدرس tehran.mysite.com را وارد کرد، اطلاعات مربوط به شهر تهران بارگذاری شود و برای سایر شهرها هم به همین ترتیب. در سرور که روش کار و ساخت ساب دومین کاملا مشخص است. اما برای لوکال باید به چه ترتیب عمل شود؟
مسلما برنامه پیش از آپلود حتما باید روی لوکال تست شود. برای ساخت ساب دومین روی لوکال هاست کافی ست به مسیر زیر رفته و فایل hosts را با دسترسی administrator باز کنید .
1
|
[windows drive]:\Windows\System32\drivers\etc |
سپس به شیوه زیر ساب دومینهای خود را در این فایل وارد کنید .
1
2
3
4
5
|
# localhost name resolution is handled within DNS itself. 127.0.0.1 localhost 127.0.0.1 tehran.localhost 127.0.0.1 mashhad.localhost 127.0.0.1 sabzevar.localhost |
خوب، از این به بعد در صورتیکه کاربر هر کدام از ساب دومینهای وارد شده در این فایل را در مرورگر خود وارد کند، به راحتی میتوان در رویداد Application_BeginRequest در فایلGloabal.asax مسیر url را بدست آورد و کاربر را به مسیر دلخواه هدایت کرد.
نکته مهمی که باید حتما توجه شود استفاده از دستور Request.Url.ToString(); است. هنگامیکه برنامه روی هاست در حال اجراست، قادر به برگرداندن مسیر به همراه با نام ساب دومین میباشد، اما این دستور روی لوکال، نام ساب دومین را برنمیگرداند! برای این کار روی لوکال استفاده از روش زیر استفاده کنید:
1
|
host = Request.Headers[ "HOST" ].ToLower(); |
اکنون بعد از به دست آوردن مسیر کاربر میتوانیم او را به مسیر دلخواه بفرستیم. مثلا من ابتدا با به دست آوردن نام شهر از روی url کاربر، کد متناظر با شهر را پیدا کرده و کد را به همراه آدرس به صفحه مورد نظر فرستاده و در آن صفحه با دریافت کد شهر، اطلاعات لازم را از دیتابیس فراخوانی میکنم:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void Application_BeginRequest( object sender, EventArgs e) { string host, url, newUrl; host = Request.Headers[ "HOST" ].ToLower(); //for localhost //host = Request.Url.ToString(); // for server url = Request.Url.PathAndQuery.ToLower(); if (host.EndsWith( ".localhost:8001" ) && (url == "" || url == "/" )) { int cityId = City.GetCityIdByCityName(host.Replace( ".localhost:8001" , "" )); newUrl = string .Format( "~/postlist/{0}/" , cityId); HttpContext.Current.RewritePath(newUrl); return ; } } |
نکته: در صورتی که در حال استفاده از vpn باشید قادر به دسترسی به subdomainهای خود در حالت لوکال نخواهید بود. پس برای تست برنامه، حتما این مورد را مد نظر داشته باشید.
موفق باشید.
- ASP.net
- 2k بازدید
- 2 تشکر