Oct 30, 2009
  7371
(1 votes)

Friendly Url and mobile phones

The EPiServerFriendlyUrlRewriteProvider in EPiServer CMS 5.2 SP2 can cause navigational problems for visitors using mobile phones. I have noticed that the browser in some Ericsson mobile phones does not handle friendly URL’s very well.

Recently this became a problem for a site I have been working on. Menus and all navigation worked well in standard web browsers, however navigating the site from my Ericsson mobile phone was simply not possible. EPiServer lost track of the current page and all menus were loaded from the root page.

One obvious solution was to use the EPiServerNullUrlRewriteProvider and go back to using the old style URL’s (somefolder/somepage.aspx?id=12345). This was not possible for the site I was working on.

My solution was to stop the rewriting of URL’s pointing to pages design for mobile phones and handle the loading of these pages in code.
The first step is to stop rewriting of specific URL’s, in my case all paths containing “/mobile”. This can bee done in Global.asax.

In Application_Start add the following:

EPiServer.Web.UrlRewriteModule.HttpRewriteInit += UrlRewriteModule_HttpRewriteInit;

Then add the following to Global.asax

private void UrlRewriteModule_HttpRewriteInit(object sender, UrlRewriteEventArgs e) { UrlRewriteModuleBase module = sender as UrlRewriteModuleBase; if (module != null) { module.HtmlAddingRewriteToExternalFilter += module_HtmlAddingRewriteToExternalFilter; } } private void module_HtmlAddingRewriteToExternalFilter(object sender, UrlRewriteEventArgs e) { string path = e.Url.Path.ToLowerInvariant(); e.Cancel = path.Contains("/mobil"); }

Now rewriting will be cancelled for URL’s containing “/mobile”. However this alone did not solve the problem. EPiServer still couldn’t load the correct page. The second step is to handle loading of pages.

I retrieve the PageData object for the desired page using the ID-parameter from the raw URL.

PageData pd = null; System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(url, "(\\?id=)[0-9]*"); if (!String.IsNullOrEmpty(m.Value) && int.TryParse(m.Value.Remove(0, 4), out id)) { pd = DataFactory.Instance.GetPage(new PageReference(id)); } return pd;

With use of the PageData object I can load the correct page, access properties and initiate menus. Problem solved for now. I am looking for a better solution, do you have one?

Oct 30, 2009

Comments

Sep 21, 2010 10:32 AM

Do you know why it does it not work well with the phone? Are the Friendly URL:s to long?

Or do you have the old style links with ID parameter that you want to use? If you want to make id to work you have to take care of this in ConvertExternalToInternal instead since the id and epslanguage parameter is is deleted from the query string by FURL.

Turning off outgoing FURL filter is not recommended and it has a lot of other side effects.
/ Fredrik Haglund (INEXOR AB)

Sep 21, 2010 10:32 AM

No I do not know why, nor does EPiServer. The URL's are not to long, they can be even longer with old style links. The problem was reported as a bug in a previous version of EPiServer CMS5 and has now been fixed. This seems to be a new bug or a local fault in the site. I tried using ConvertExternalToInternal but could not make it work for me. At least this solution works and it is contained to a small portion of the site.
Thank you for your comment

/ Kristoffer

MuraliKrishna@websynergies.biz
MuraliKrishna@websynergies.biz Jul 13, 2011 06:52 AM

Hi,
I am new to Mobile version.Can any one suggest me how to develop a simple page to view in mobiles?...........

MuraliKrishna@websynergies.biz
MuraliKrishna@websynergies.biz Jul 18, 2011 09:36 AM

OK.My problem is fixed.i used EPIModule and Mobile Pack to view the pages of mobile version in episerver cms......still i hv to view it in IPhone.......

Please login to comment.
Latest blogs
Optimizely PaaS + Figma + AI: Auto‑Generate Blocks with Cursor

What if your design handoff wrote itself? In this end‑to‑end demo, I use an AI Agent (inside Cursor) to translate a Figma design into an... The pos...

Naveed Ul-Haq | Feb 5, 2026 |

Graph access with only JS and Fetch

Postman is a popular tool for testing APIs. However, when testing an API like Optimizely Graph that I will be consuming in the front-end I prefer t...

Daniel Halse | Feb 4, 2026

Best Practices for Implementing Optimizely SaaS CMS: A Collective Wisdom Guide

This guide compiles collective insights and recommendations from Optimizely experts for implementing Optimizely SaaS CMS, focusing on achieving...

David Knipe | Feb 4, 2026 |

A day in the life of an Optimizely OMVP: Learning Optimizely Just Got Easier: Introducing the Optimizely Learning Centre

On the back of my last post about the Opti Graph Learning Centre, I am now happy to announce a revamped interactive learning platform that makes...

Graham Carr | Jan 31, 2026

Scheduled job for deleting content types and all related content

In my previous blog post which was about getting an overview of your sites content https://world.optimizely.com/blogs/Per-Nergard/Dates/2026/1/sche...

Per Nergård (MVP) | Jan 30, 2026

Working With Applications in Optimizely CMS 13

💡 Note:  The following content has been written based on Optimizely CMS 13 Preview 2 and may not accurately reflect the final release version. As...

Mark Stott | Jan 30, 2026