Search code examples
asp.net-mvciis-6isapi-rewritehelicontech

Using ISAPI Rewrite 3 & ASP.Net MVC?


I'm using ISAPI Rewrite3 on IIS6 for two Virtual Directories at the moment that contain Wordpress.

I need to setup some rules at the root of the site to redirect old urls to new urls:

i.e.

http://www.example.com/somefolder/* > http://www.example.com/newfolder/

&

http://www.example.com/somefolder/file_1.htm > http://www.example.com/newmvcpath/

I need to do this without breaking MVC (as its set to wildcard) and without affecting the two virtual directories.

Also how would I set a wildcard up for /somefolder/file_1.htm the numeric bit.

Any help greatly appreciated

(heliontech iis rewrite)


Solution

  • .htaccess file

    # Helicon ISAPI_Rewrite configuration file
    # Version 3.1.0.64
    
    RewriteEngine on
    
    #301 Redirections
    #FRANCE (all .html files in a folder)
    RewriteRule places-in-france/(.*)\.html places/france [NC,R=301]
    
    #Numeric
    RewriteRule companies-france/Companies-in-Pyrenees_(.*)\.htm companies/france [NC,R=301]
    
    #rest of stuff
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # Add extensions to this rule to avoid them being processed by ASP.NET
    RewriteRule (.*)\.(css|gif|png|jpeg|jpg|js|zip) $1.$2 [I,L]
    
    # Prefixes URLs with "rewritten.aspx/", so that ASP.NET handles them
    RewriteRule ^(.*) /rewritten.aspx/$1 [I]
    

    Added code to Global.asax.cs

    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;
        if (app != null)
            if (app.Request.AppRelativeCurrentExecutionFilePath == "~/rewritten.aspx")
                app.Context.RewritePath(
                    app.Request.Url.PathAndQuery.Replace("/rewritten.aspx", "")
                );
    }
    

    Using option 4 from this blog http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/ but slightly amended.

    This also means I've turned wildcard mapping off.