1-888-365-2779
+1-888-365-2779
Try Now
More in this section

Forums / General Discussions / Extension less urls in Sitefinity 5.0 after migration from 3.7

Extension less urls in Sitefinity 5.0 after migration from 3.7

3 posts, 0 answered
  1. Joshua Martyn
    Joshua Martyn avatar
    8 posts
    Registered:
    14 May 2009
    01 May 2012
    Link to this post
    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();
    }

    where will be the ideal place(master page or some other common place) where I can execute this code? Does this code need to be run for evey request or just one time?
    Also, after running the above  code, I got the pages working without extension,but now the problem is the pages are not available with extension. How can I make the files available with and without extension?
    Rgds
    Ben
  2. SelAromDotNet
    SelAromDotNet avatar
    912 posts
    Registered:
    18 Jul 2012
    01 May 2012
    Link to this post
    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!
  3. Joshua Martyn
    Joshua Martyn avatar
    8 posts
    Registered:
    14 May 2009
    03 May 2012
    Link to this post

    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

3 posts, 0 answered