Относительные пути не работают с IIS Rewrite - PullRequest
0 голосов
/ 15 октября 2011

У меня есть сайт, который, когда люди переходят на 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

Я пыталсякуча различных исправлений, в том числе добавление Page.RequestUrl с ~ и тому подобным, но все они добавляют clientArea впереди.Что не работает, так как мы уже находимся в папке 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 Ответ

0 голосов
/ 15 октября 2011

Попробуйте использовать 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();
                }
            }
        }

И напишите остальную часть правила в веб-конфиге и попробуйте.

...