Has anyone else noticed that in EPiServer 5 CMS SP1 if you have absolute paths defined anywhere in your application (be it in a user control for the stylesheets in the header, or in a property of an EPiServer page) then the absolute path gets rewritten to be relative?
For example, what would be coded as:
Becomes this at one level deep:
Personally this isn't functionality that is beneficial and is causing problems in some circumstances, such as using an EPiServer page as a 404 page (it gets the paths incorrect).
I've raised this as a bug but alas it's strayed off into 404 territory and the core issue is not being dealt with.
The UrlRewriter have been discussed some before on the forum (post).
But a quick summary:
There is a static property on the FriendlyUrlRewriteProvider called UnTouchedPaths. You can enter paths to that collection and they will be ignored by the url rewriter.
Should you need to mark a specific aspx to be ignored then have a look at Fredrik Haglund's blog post on how to prevent paths to be rewritten by EPiServer CMS 5.
Petter, you where faster to refer to my blog than myself.
I had a similar situation in one of my projects where FURL was not the culprit. I had the following code in my masterpage:
<a runat="server" href="#content" accesskey="s" title="Skip navigation">
And it generates this output:
<a href="Templates/Public/MasterPages/#content" accesskey="s" title="Skip navigation">
Note, that the path to the masterpage is added by the fact that you convert it to a html control with runat="server" and removing that would leave it correct.
There problem above is probably related to the fact that all URL processed by FriendlyHtmlRewriteToExternal is run through EPiServer.UrlBuilder.Rebase with RebaseKind set to default. I second Rob and would also prefer if EPiServer could leave URLs not related to EPiServer pages and files untouched.
The only workaround I can think of is to create your own sub class of FriendlyUrlRewriteProvider and override GetHtmlRewriter() and add an event handler for HtmlRewritingUrl that cancels rewrite of absolute urls.
Would cancelling rewrite of all absolute URLs solve the problem? I'm pretty sure that when you create links to internal pages with the "DHTML" editor, they reference the template aspx path with the page ID appended as a query string.
Those URLs would still need to be handled by the URL rewriter.
I think it's more a case of rewriting URLs to be absolute, rather than rewriting them to be relative, and I wouldn't have thought that the functionality actually needs to be much different to achieve this, nor would there be any negative effects.