IIS 7 Url Rewrite Rule - mod-rewrite

I want to rewrite an existing url /rss/content.aspx?id=4878 to display as /rss.
I also need requests to /rss to display this same content. I have this rule:
<rule name="ContentRSS">
<match url="^rss$" />
<action type="Rewrite" url="rss/content.aspx?id=4878" />
</rule>
but it doesn't rewrite requests to rss/content.aspx?id=4878 as /rss

You rule should be:
<rules>
<rule name="ContentRSS redirect" stopProcessing="true">
<match url="^rss/content.aspx$" />
<action type="Redirect" url="/rss" appendQueryString="false" />
<conditions>
<add input="{QUERY_STRING}" pattern="id=4878" />
</conditions>
</rule>
<rule name="ContentRSS rrewrite">
<match url="^rss$" />
<action type="Rewrite" url="/rss/content.aspx?id=4878" />
</rule>
</rules>
This rule will rewrite /rss to /rss/content.aspx?id=4878. And when you will try to open in browser rss/content.aspx?id=4878 it will redirect to /rss

Related

How to set up a rewrite rule for an ASP site?

I would like to redirect any photo.asp?id= here is anything after the =
to photographe.asp?id= here is anything after the =
example
photo.asp?id=161#photographie-automobile
to
photographe.asp?id=161#photographie-automobile
or
photo.asp?id=230#road-suv
to
photographe.asp?id=230#road-suv
Code below:
<rule name="SpecificRedirect" stopProcessing="true">
<match url="^photo.asp$" />
<action type="Redirect" url="/photographe.asp$"
redirectType="Permanent" />
</rule>

301 redirect rule in web.config

I have a url http://example.com/abc/pqr/112-digital I want do 301 redirect to http://example.com/abc/pqr/digital
not working..
<rule name="RedirectToBlog140" stopProcessing="true">
<match url="^abc/pqr/112-digital?$|^abc/pqr/112-digital(.*)$" />
<conditions />
<serverVariables />
<action type="Redirect" url="abc/pqr/digital/{R:1}" />
</rule>
Please Help

URL Rewrite Rule to remove www. for all URLs except for 1

I have a working rule that removes www. for all urls coming in. I have a webserivce that the redirect will change from a POST to a GET. I need to exclude the URL https://www.foo.net/WebServices/service.asmx from this rule.
I have looked at other solutions on SO with no success.
<rewrite>
<rules>
<rule name="Remove WWW" enabled="true" stopProcessing="true">
<match url=".*"/>
<conditions>
<add input="{HTTP_HOST}" pattern="^(www\.)(foo\.net)" />
</conditions>
<action type="Redirect" url="https://{C:2}/{R:1}" />
</rule>
</rules>
</rewrite>
You can do that easily by adding a condition to "not match" (aka adding "negate='true'" ), something like this should work:
<rules>
<rule name="Remove WWW" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.foo\.net$" />
<add input="{URL}" pattern="^/WebServices/service\.asmx$" negate="true" />
</conditions>
<action type="Redirect" url="https://foo.net/{R:1}" />
</rule>
</rules>

Subdomain url-rewrite in web.config

This is how i currently want to redirect my site to
when i try navigating to
http://sub1.sitename.com it should redirect to sitename.com/newprojects/sub1
and the same for sub2
i tried using it like this but it ends up loading www.sitename.com
<rewrite>
<rules>
<rule name="Redirect" stopProcessing="true">
<match url="^sub1\.sitename\.com$" ignoreCase="true" />
<action type="Redirect" url="sitename\.com/newprojects/sub1/" redirectType="Permanent" />
</rule>
<rule name="Redirect1" stopProcessing="true">
<match url="^sub2\.sitename\.com$" ignoreCase="true" />
<action type="Redirect" url="sitename\.com/newprojects/sub2/" redirectType="Permanent" /> </rule>
</rules>
</rewrite>
You could try matching all the URL's and then filtering based on what you want to redirect.
<rewrite>
<rules>
<rule name="sub1 redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^sub1\.site\.com(/)?$"/>
<add input="{PATH_INFO}" pattern="^/newprojects/sub1/" negate="true" />
</conditions>
<action type="Rewrite" url="\newprojects\sub1\{R:0}" />
</rule>
</rules>
</rewrite>
this worked for me.

Why won't this URL Rewrite rule fire?

Rule is
<rule name="Redirect to new host" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_URI}" pattern=".*mycompany\.com/blogs(.*)" />
</conditions>
<action type="Redirect" url="http://blogs.mycompany.com{C:1}" />
</rule>
The module's built-in pattern tester says that http://subdomain.mycompany.com/blogs/blog1 matches, so it should redirect to http://blogs.mycompany.com/blog1, but nothing happens. Would greatly appreciate help fixing this rule or writing one that does work!
It's work:
<rule name="Test" stopProcessing="true">
<match url=".*" />
<conditions trackAllCaptures="true">
<add input="{HTTP_HOST}" pattern="^.*mycompany\.com$" />
<add input="{URL}" pattern="^/blogs(.*)$" />
</conditions>
<action type="Redirect" url="http://blogs.mycompany.com{C:1}" />
</rule>

Resources