I am using IIS url rewriting module in asp.net application, my problem is any internal relative references like js, css, images are now pointing to wrong url after this url rewrite, below is my rewriting rule
<rewrite>
<rules>
<rule name="pk" patternSyntax="ECMAScript">
<match url="pk/([a-z]+).aspx" />
<action type="Rewrite" url="{R:1}.aspx?mid=1" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" pattern="(\.css|\.js)$" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>
In above rewrite any url with “pk/page_name.aspx” is being translated to page_name.aspx?mid=1, this is working fine, however references to js,css and images in master page are now also pointing to “pk/files/js/jquery.js” while in my application it should be “files/js/jquery.js”, Please help me solve this issue.
I am able to solve this issue by myself, Earlier i was doing it completely wrong, I was doing just a rewrite which is causing problem, I solved this by first “Redirecting” the page to the desired URL and then “Rewriting” that URL to the one which my application understand. Following are my configuration
After doing this my URL which is like https://www.mydomain.com/index.aspx?mid=1 is first “Redirected” to https://www.mydomain.com/pk/index.aspx and then “Rewritten” to https://www.mydomain.com/index.aspx?mid=1 internally. So my browser window show URL as https://www.mydomain.com/pk/index.aspx and value I get in Request.QueryString[“mid”] is 1, which is exactly what i wanted.
One thing more for internal URLs to work I have to take the base URL in master page currently it is set to “/”