Extension less urls in Sitefinity 5.0 after migration from 3.7
Hello,
I have a website in sitefinity 5.0, migrated from 3.7 and I would like all the .aspx pages accessible without the extension(for SEO purpose)
For ex:- www.mysite.com/aboutus.aspx should be accessible as
www.mysite,com/aboutus
As per one of the recommendations, I tried the following code to remove extension.
using
(var api = App.WorkWith())
var pages = api.Pages().LocatedIn(PageLocation.Frontend).ThatArePublished()
.ForEach(page =>
page.Extension =
null
;
).SaveChanges();
Ben,
The code needs to be run only once after migration (or any time such urls are introduced to your site); once the changes are made they are permanently saved.
You can run this anywhere code can execute, such as a master page or usercontrol code-behind. Personally, I always add a blank test.aspx webform, add my temporary logic to the code-behind, build, load the page, then delete it when I'm done.
As for supporting the old urls with extension, you can do this with something like the IIS Url Rewrite module (I wrote about this briefly when migrating my personal website from Sitefinity 3.7)
The Url Rewrite module allows you to use regex to create 301 redirects, dropping the .aspx extension (as well as a slew of other possibilities like forcing lower-case urls, etc)
I hope this is helpful!
Thank you for your reply.
I tried with the following code for the url rewriting.
public class UrlRewriting : IHttpModule
public void Init(System.Web.HttpApplication MyApp)
MyApp.BeginRequest += new System.EventHandler(Rewriting_BeginRequest);
public void Rewriting_BeginRequest(object sender, System.EventArgs args)
HttpApplication inst = sender as HttpApplication;
string req_path = inst.Context.Request.Path.ToLower();
if (req_path.IndexOf("/sitefinity/") < 0)
if (inst.Context.Request.CurrentExecutionFilePathExtension == ".aspx")
if (req_path.IndexOf(".aspx") > 0)
req_path = req_path.Replace(".aspx", "");
HttpContext.Current.Response.Redirect(req_path);
public void Dispose()
I was trying to put it under App_Code folder as a .cs file(rewrite.cs), not sure whether this folder is disabled in latest sitefinity 5.0. If yes, is there any better place where I can place this code?
Also , one more disadvantage I found is that, if the user types in www.mysite.com/aboutus.aspx
in the url box of the browser, it is coming as www.mysite.com/aboutus
It is actually doing a response.redirect . If it was server.transfer(new url), the url in the url box will be same(but unfortunately server.transfer doesn't work here). any ideas?
Rgds
Ben