Last week I wrote a short blog post
about how to create consistent, lowercase, URLs for your EPiServer
CMS 6 site. While there has been some discussion wether or not
the casing of the URLs affect indexing, this post is more of a
correction on the code in the last post.
I did what I've been telling people not to do. I copied code,
and I expected it to work as advertised. Needless to say, it
didn't. The general idea was to hook into the
UrlSegment.CreatedUrlSegment event, and make sure that the URL was
lowercase. It works fine every time you edit a page, and alter the
URLSegment property. However, if you go into admin mode, and decide
to rebuild all URLs, you're in for a treat. The Rebuilding of URLs
doesn't fire the UrlSegment.CreatedUrlSegment event, since it just
alters the property on the PageData object, and creates a new
version of the page. This circumvents the event model for
URLSegements, I'd call it a bug, others might call it a feature,
but I leave it up to more intelligent people than me to decide what
to do. In the meantime, I've moved my logic to the
DataFactory.Instance.SavingPage event, since that is fired every
time the page is saved, no matter where you alter the page from.
It's in the DataFactory, it's "unfuckwithable".
I copied code, I'm sorry. I will never do it again. Never. At
least not without testing the results throughly first :)