IIS 8 Rewrite Rules for Folder - asp.net

I have Asp.Net project. My project physical path structure as /htdocs/site1/...
I would like to change this url request as /site1/...
I have put below codes into to webconfig but it is not working. Currently IIS 8 rewrite extension installed on web server
<system.webServer>
<rewrite>
<rules>
<rule name="htdocs_remove">
<match url="/htdocs/site1/" />
<action type="Rewrite" url="/site1/" />
</rule>
</rules>
</rewrite>
</system.webServer>

Restart IIS and try again. If it fails to work then follow this ref-1 and ref-2.

Related

Asp.Net on IIS - Add default route to url

I am trying to change the default URL of my Asp.Net website on IIS. At the moment the URL leading to the default index.html, is just http://myservername/. But I would actually prefer to extend the URL to http://myservername/route1, which then still routes to the default html. How can I achieve this?
Download Microsoft URL Rewrite Module and install it
and add this to your web.config
<system.webServer>
<rewrite>
<rules>
<rule name="Root Hit Redirect" stopProcessing="true">
<match url="^$" />
<action type="Redirect" url="/route1" />
</rule>
</rules>
</rewrite>
</system.webServer>

IIS URL Redirect works, but Rewrite throws 403 forbidden error

I have a web.config file in a subdirectory of an IIS application like this
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Proxy2" stopProcessing="true" patternSyntax="Wildcard">
<match url="*" ignoreCase="true"/>
<conditions>
<add input="{HTTP_HOST}" pattern="*" />
</conditions>
<action type="Rewrite" url="http://anotherurl.com/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
so, if I browse https://www.abc.com/subdir , it will return 403 forbidden error. but if I change the action to redirect, it will redirect without problems. what should I look for to find the problem?
It's not possible to rewrite to another URL (or another Application Pool). Only redirect will work in this case.
Edit: Technically it's possible, but not the way you've implemented it. If you want to rewrite to another URL, you'll need to implement as a reverse proxy using the Application Request Routing (ARR) module in IIS.

IIS7.5 Direct all requests to one page

I wish to create a site that returns the same html page for all page requests.
For example the same page will be served for all the below requests:
http://holdingsite
http://holdingsite/foo
http://holdingsite/foo/bar
http://holdingsite/foo.aspx
http://holdingsite/foo.html
What configuration is needed to ensure every request is directed to this one page?
If you can, install the URL Rewrite Module
You can then add a rewrite rule to you config
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="catchall" stopProcessing="true">
<match url=".*" />
<action type="Rewrite" url="/somepage.htm" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
N.b You can also configure this via IIS once you have installed the module

IIS 7 url rewrite module on web.config

can anybody help me with this please. I have IIS7 and the hosting says that the URL Rewrite module has been installed already. I even put into the bin directory the Microsoft.Web.Iis.Rewrite.dll
i can only use the web.config for the url rewrite configuration since I dont have access to the IIS manager (hosting restriction).
here is my code on the web.config:
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite to list_cities.aspx">
<match url="^/state/([a-zA-Z]+)" />
<action type="Rewrite" url="~/list_cities.aspx?state={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
I still get the error, HTTP Error 404.0 - Not Found, when i go to
http://xxxxxxxx.com/state/CA/ . I have already searched the issue but I cant seem to find any solutions.
Can anybody please check my code. Thanks a lot.
I found the solution just now (not being an IIS expert...)
Change {R:1} for {R:0}
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite to list_cities.aspx">
<match url="^/state/([a-zA-Z]+)" />
<action type="Rewrite" url="~/list_cities.aspx?state={R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>

How to redirect a url only with specific parameters in IIS

I have a url that looks like this:
www.mywebsite.com/page.aspx?code=1.a
I want to redirect this URL via IIS to:
www.mywebsite.com/page.aspx?code=1.b
I would like to do this through IIS and not within the code.
I have various other website urls that look like:
www.mywebsite.com/page.aspx?code=2
www.mywebsite.com/page.aspx?code=3.a
www.mywebsite.com/page.aspx?code=6.c
I don't want these to be affected.
Thanks.
An easy way to do this in IIS 7.5 is to install the URL Rewrite extension from Microsoft into IIS.
http://www.iis.net/downloads/microsoft/url-rewrite
Once you have it installed, you can just add a rule to redirect from ?code=1.a to ?code=1.b. In IIS, you'll see a new entry called URL Rewrite under the IIS heading for your website. You can use the editor there to create a new rule. Once the rule is created, it will be written into your web.config file.
In the web.config file, the rule should look something like this:
<system.webServer>
...
<rewrite>
<rules>
<rule name="Code=1.a redirect" patternSyntax="ExactMatch"
stopProcessing="true">
<match url="page.aspx" />
<action type="Redirect" url="page.aspx?code=1.b"
appendQueryString="false" redirectType="Permanent" />
<conditions>
<add input="{QUERY_STRING}" pattern="code=1.a" />
</conditions>
</rule>
</rules>
</rewrite>
...
</system.webServer>

Resources