#asp.net #subdomain #iis-7.5
#asp.net #поддомен #iis-7.5
Вопрос:
У меня есть сайт, на который когда люди переходят http://subdomain.mysite.com / он переписывается в
http://mysite.com/clientArea/Default.aspx?ID=1234
и затем, когда люди переходят к http://subdomain.mysite.com/AnythingElse.aspx затем он переписывается в http://mysite.com/clientArea/AnythingElse.aspx
Проблема связана с таблицами стилей, по какой-то причине они разрешаются неправильно.
В моем коде я ввел их следующим образом
<link rel="Stylesheet" href="css/myStyleSheet.css" type="text/css" media="screen" />
Но когда я пытаюсь посетить свой веб-сайт на http://subdomain.mysite.com / и посмотрите на источник, они изменились на это
<link rel="Stylesheet" href="clientArea/css/myStyleSheet.css" type="text/css" media="screen" />
Который не работает, потому что он пытается получить ресурс из
http://subdomain.mysite.com/clientArea/css/myStyleSheet.css
откуда он должен пытаться получить ресурсы
http://subdomain.mysite.com/css/myStyleSheet.css
Я перепробовал множество различных исправлений, включая добавление на страницу.RequestUrl с помощью ~ и тому подобное, но все они добавляют клиентскую область впереди. Что не работает, поскольку мы уже находимся в папке ClientArea.
Любая помощь в этом вопросе была бы отличной.
Вот мои правила перезаписи
<rule name="Remove Subdomain" enabled="true" stopProcessing="true">
<match url="^$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(?!www)subdomain.mysite.com$" />
</conditions>
<action type="Rewrite" url="clientArea/?ID=1234" appendQueryString="true" logRewrittenUrl="true" />
</rule>
<rule name="Everything Else" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(?!www)subdomain.mysite.com$" />
</conditions>
<action type="Rewrite" url="clientArea/{R:0}" />
</rule>
Ответ №1:
Попробуйте использовать UrlRewriter.dll и примените приведенный ниже код в Global.ascx
if (Request.Url.AbsoluteUri.EndsWith(".jpg") || Request.Url.AbsoluteUri.EndsWith(".gif") ||
Request.Url.AbsoluteUri.EndsWith(".png") || Request.Url.AbsoluteUri.EndsWith(".ico") ||
Request.Url.AbsoluteUri.EndsWith(".js") || Request.Url.AbsoluteUri.EndsWith(".css"))
{ }
else
{
if (!Convert.ToString(arrPath[1]).Equals("admin", StringComparison.CurrentCultureIgnoreCase))
{
if (!Convert.ToString(arrPath[1]).Equals("demo.aspx", StringComparison.CurrentCultureIgnoreCase))
{
URLRewriter.Rewriter.Process();
}
}
}
И напишите остальную часть правила в web config и попробуйте.