IIS Express 8.0 rewrite <rules> inside <outboundRules> not recognized - visual-studio-2010

VS2010 IIS Express 8.0, trying to test rewrite rules in my development machine. I am adding this section to my web.config. Everything works until I add the 'rule' part inside the 'outboundRules' section, in which case I get the 500.52 error. I've tried all combinations or installing / uninstalling IIS, Windows Process Activation and all that, but nothing. Any ideas?
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<rewrite>
<rules>
<rule name="Rewrite to RewriteTest.aspx">
<match url="^RewriteTest/([0-9]+)/(g[_0-9a-z-]+)" />
<action type="Rewrite" url="RewriteTest.aspx?id={R:1}&title={R:2}" />
</rule>
</rules>
<outboundRules>
<rule name="Rewrite to clean URL" preCondition="IsHTML">
<match filterByTags="A" pattern="^/RewriteTest\.aspx\?id=([0-9]+)(?:&|&amp;)title=([_0-9a-z-]+)$" />
<action type="Rewrite" value="/RewriteTest/{R:1}/{R:2}" />
</rule>
<preConditions>
<preCondition name="IsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>

Related

Enable htpps for a website hosted in windows server

Having the SSL certificate supposedly implemented on the server, what's the next step to have "https//" at the beginning of the URLs?
Thanks for the overwhelming help. I managed to resolve my problem and was actually very simple. I had to create a web.config file and copy paste the next code
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Force HTTPS" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://www.example.es/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
And after that, replace the url with the one from your own web. Simple but if you donĀ“t have any knoledge on the matter is actually very frustrating

Rewrite rule for windows server + IIS and Cakephp 3.x

I want to deploy my site to Windows hosting from linux. On Linux server everything working as expected. but few things are not working on windows server.
Please let me know what changes i need to do in web.config
My file system is:
-src
-webroot
--css
--about.html
--index.php
--contact.php
Now how i can access about.html directly http://www.example.com/about.html and similarly for other php files too.
these are rule i am using for now:
<rewrite>
<rules>
<rule name="Exclude direct access to webroot/*"
stopProcessing="true">
<match url="^webroot/(.*)$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="Rewrite routed access to assets(img, css, files, js, favicon)"
stopProcessing="true">
<match url="^(assets|font|fonts|img|images|css|files|js|favicon.ico)(.*)$" />
<action type="Rewrite" url="webroot/{R:1}{R:2}"
appendQueryString="false" />
</rule>
<rule name="Rewrite requested file/folder to index.php"
stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<action type="Rewrite" url="index.php"
appendQueryString="true" />
</rule>
</rules>
</rewrite>

Host header (SERVER:) and URL Rewrite

I want to hide the IIS version in my web server response. I am trying to do this via URLRewrite for my website.
My web.config looks like so:
<rewrite>
<outboundRules>
<rule name="RewriteServerSoftware" stopProcessing="true">
<match serverVariable="SERVER_SOFTWARE" pattern="." />
<action type="Rewrite" value="MyServer" replace="true" />
</rule>
</outboundRules>
</rewrite>
This however does not seem to remove the value of Server:Microsoft-IIS/8.0. What might I be missing?
My environment is Windows Server 2012 R2 and IIS 8.0, hosting an ASP.NET website
The correct server variable name is: RESPONSE_Server which follows the RESPONSE_headername format.
So your config should be:
<rewrite>
<outboundRules>
<rule name="RewriteServerSoftware" stopProcessing="true">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="MyServer" replace="true" />
</rule>
</outboundRules>
</rewrite>
One additional thing to note is that if you're using IIS 10.0 you also might need to add the following to your web.config:
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
In my case with IIS 10.0 only using both URL-Rewrite and the removeServerHeader worked.
More Info: https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/

Routing all requests for different domains to different folders on the same root

I posted a question up yesterday basically I have a single plan with winhost and I want to be able to have multiple domains (that are all pointed at my root) go to different subfolders and in these sub-folders I host different MVC apps. A very helpful chap took me most of the way but (and I know its lame how difficult im finding this) but I really cannot work out how to do the final peice...
The IIS config...
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect if producerpte" stopProcessing="true">
<match url="^producerpte/(.*)$" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Rewrite to sub folder">
<match url="^.*$" />
<action type="Rewrite" url="producerpte/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
works brilliantly. When I now go to http://www.producerpte.co.uk I can see my site in the subfolder but the url looks like its on the root. However I also want to try and host my girlfriends site so I have tried multiple combinations but I just cannot seem to add rules that will work for both sites...I know I need to add two more rules like this...
<configuration>
<system.webServer>
<rewrite>
<rules><!--first site-->
<rule name="Redirect if producerpte" stopProcessing="true">
<match url="^producerpte/(.*)$" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Rewrite to sub folder producerpte">
<match url="^.*$" />
<action type="Rewrite" url="producerpte/{R:0}" />
</rule>
<!--second site-->
<rule name="Redirect if samyoga" stopProcessing="true">
<match url="^samyoga/(.*)$" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Rewrite to sub folder samyoga">
<match url="^.*$" />
<action type="Rewrite" url="samyoga/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Whatever it is about the last rule I just cant get it to route. If I use it then when I go to Samyoga.co.uk I end up at Samyoga.co.uk/producerpte ?????
I tried matching the wildcard in the second rule (for each site) it just doesnt work at all then.....

ISAPI PHP REWRITE

A friend is having me figure out a way to modrewrite on his windows server. He is running IIS 6 and Isapi is about the only thing I can find. I am not familiar with it and have read some of the documentation, but can't quite wrap my head around it. He is wanting to rewrite these URLS to make them clean
www.domain.com/cat.php?CTGID=####
and
www.domain.com/pp.php?ID=##
How would I go about rewriting these two URLS to make them Clean in ISAPI. I have installed it on the Windows Server and do I put these rules in IISF.ini in his website folder or put these codes in the master IISF file? Any Help would be greatly appreciated!
Rewrite rules go in a web.config file or in the ApplicationHost.config.
As described in http://learn.iis.net/page.aspx/465/url-rewrite-module-configuration-reference/
Examples
<rewrite>
<rules>
<rule name="Force WWW" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^example.com$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:0}" redirectType="Permanent" />
</rule>
<rule name="Redirect from blog">
<match url="^blog/([_0-9a-z-]+)/([0-9]+)" />
<action type="Redirect" url="article/{R:2}/{R:1}" redirectType="Found" />
</rule>
<rule name="Rewrite to article.aspx">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&title={R:2}" />
</rule>
</rules>
</rewrite>
For IIS, if the ISAPI_Rewrite module is installed, $_SERVER["IIS_UrlRewriteModule"] is set and contains the version number of the module. So you can check for the existence of this server variable.

Resources