آموزش ساخت و کار با subdomain در حالت لوکال هاست
نویسنده: ناصر فرجی
تاریخ: ۱۳۹۱/۱۲/۱۱ ۱۲:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
برای پروژه ای نیاز بود تا از sub-domain استفاده شود. نحوه کار بدین صورت بود که اطلاعات باید بر اساس شهرها بارگذاری میشد؛ برای مثال اگر کاربر آدرس tehran.mysite.com را وارد کرد، اطلاعات مربوط به شهر تهران بارگذاری شود و برای سایر شهرها هم به همین ترتیب. در سرور که روش کار و ساخت ساب دومین کاملا مشخص است. اما برای لوکال باید به چه ترتیب عمل شود؟
مسلما برنامه پیش از آپلود حتما باید روی لوکال تست شود. برای ساخت ساب دومین روی لوکال هاست کافی ست به مسیر زیر رفته و فایل hosts را با دسترسی administrator باز کنید .
[windows drive]:\Windows\System32\drivers\etc
# 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
host = Request.Headers["HOST"].ToLower();
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های خود در حالت لوکال نخواهید بود. پس برای تست برنامه، حتما این مورد را مد نظر داشته باشید.
موفق باشید.IIS ماژولی به نام URL Rewrite برای اینکار داره. با برنامه نویسی هم قابل کنترل است.
Bad Request - Invalid Hostname HTTP Error 400. The request hostname is invalid.
<bindings>
<binding protocol="http" bindingInformation="*:6100:localhost" />
<binding protocol="http" bindingInformation="*:6100:mysite.com" />
<binding protocol="http" bindingInformation="*:6100:store1.mysite.com" />
<binding protocol="http" bindingInformation="*:6100:store2.mysite.com" />
<binding protocol="http" bindingInformation="*:6100:store3.mysite.com" />
<binding protocol="http" bindingInformation="*:6100:store4.mysite.com" />
<binding protocol="http" bindingInformation="*:6100:store5.mysite.com" />
<binding protocol="http" bindingInformation="*:6100:master.mysite.com" />
</bindings> 127.0.0.1 localhost 127.0.0.1 mysite.com 127.0.0.1 master.mysite.com 127.0.0.1 store1.mysite.com 127.0.0.1 store2.mysite.com 127.0.0.1 store3.mysite.com 127.0.0.1 store4.mysite.com 127.0.0.1 store5.mysite.com 127.0.0.1 store6.mysite.com 127.0.0.1 store7.mysite.com 127.0.0.1 store8.mysite.com 127.0.0.1 store9.mysite.com
<bindings> <!--<binding protocol="http" bindingInformation="*:80:localhost" />--> <binding protocol="http" bindingInformation="*:80:mysite.com" /> <binding protocol="http" bindingInformation="*:80:master.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store1.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store2.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store3.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store4.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store5.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store6.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store7.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store8.mysite.com" /> <binding protocol="http" bindingInformation="*:80:store9.mysite.com" /> </bindings>
netsh http add urlacl url=http://mysite.com:80/ user=everyone netsh http add urlacl url=http://master.mysite.com:80/ user=everyone . . . netsh http add urlacl url=http://store9.mysite.com:80/ user=everyone