K Khan
Dec 2, 2014
visibility 6425
star star star star star
(1 votes)

Trailing slashes in website

Trailing slashes in your website.
We got some SEO requirements for a website that
1. All the links in website either should have a trailing slash (preferred) or not.
2. Further if user enters www.site.com it should automatically redirect to www.site.com/ . Our site is a commerce site and using DefaultHierarchialRouter for commerce routing.

For the first requirement solution is very simple. In some initialization module we can force trailing slash for the website using EPiServer.Web.Routing.ContentRoute.UseTrailingSlash = true;

For the 2nd requirement in 7.5 multiple suggestion came by Quan and Johan. You can find those details under thread http://world.episerver.com/Modules/Forum/Pages/Thread.aspx?id=113080. But we preferred to install IIS rewrite module to solve this issue, that can be downloaded from http://www.microsoft.com/en-us/download/details.aspx?id=5747 and can be setup http://thatsit.com.au/seo/tutorials/how-to-fix-canonical-issues-involving-the-trailing-slash 
We requires some extra rules to avoid trailing slash for online center, images, and other static contents. You can find a general rule set for an episerver site as following
<rule name="AddTrailingSlashRule1" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{URL}" pattern="/bundles/" negate="true" />
<add input="{URL}" pattern="/cm/UI/" negate="true" />
<add input="{URL}" pattern="/App_Themes/" negate="true" />
<add input="{URL}" pattern="/util/" negate="true" />
<add input="{URL}" pattern="/SearchAction" negate="true" />
<add input="{URL}" pattern="/Index" negate="true" />
<add input="{URL}" pattern="/globalassets/" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}/" />
</rule>

Dec 02, 2014

Comments

Johan Book
Johan Book Dec 4, 2014 09:19 AM

Is there really a SEO difference between a URL with- and without trailing slash? IMO they should be treated the same way. Then again, I'm not google ;-)

K Khan
K Khan Dec 4, 2014 11:37 AM

Requirement was that there must not be mix of urls. either whole site should be with trailing slash or whole site should be without trailing slash.

Technically, Urls may look similar and even can take a visitor to the same url, but they can be very different, from an SEO perspective. e.g. a trailing slash in one URL could be read by search engines as two separate and different URLs. This can create the potential for duplicate content issues to arise, which can confuse search engines.

When trailing slashes are used in URLs for backlinking, Google will recognize those Web pages differently than a main page that has no trailing slash.

http://googlewebmastercentral.blogspot.co.uk/2010/04/to-slash-or-not-to-slash.html

Justin Le
Justin Le Dec 5, 2014 08:48 AM

One note on using iis rewrite is that you might have issue with multiple redirection. For example if you have two rule: first one is add trailing slash and second one is force lower url. Then when you type: www.site.com/Abc, browser will make two redirection www.site.com/Abc -> www.site.com/Abc/ -> www.site.com/abc/, which is bad for SEO.

I would suggest to extend the default router and using SegmentContext.PermanentRedirect(string url) to redirect your url. Then you could force lower case and add ending trail if missing.

K Khan
K Khan Dec 5, 2014 11:25 AM

Well, Lower case is resolved in initialization module EPiServer.Web.UrlSegment.UseLowerCaseSegments = true;
I am agreed SegmentContext.PermanentRedirect is best solution as a permanent fix.

error Please login to comment.
Latest blogs
Add more scheduled job settings from the Optimizely CMS 12 admin UI -- with OptiScheduledJob.ExtraParameters

  Optimizely (EPiServer) CMS 12 ships a great scheduled-jobs framework, but it has one frustrating gap: a job has nowhere to store its own...

Binh Nguyen Thi | Jun 25, 2026

Automated Search & Navigation to Graph Migration with Claude Code

A Claude Code plugin that scans your S&N codebase, applies Graph SDK transformations, and validates the result. Install once, run one command. CMS ...

Connor Fortin | Jun 24, 2026

Migrating from Find to Graph: Lessons Learned from a Real CMS 13 Project

While migrating a search solution from Optimizely Search & Navigation (Find) to Optimizely Graph in CMS 13, I encountered several issues that were...

Binh Nguyen Thi | Jun 24, 2026

Optimizely: Upgrade Opti-ID and .NET 10 in CMS 12

Many Optimizely customers are planning their roadmap around a future migration to Optimizely CMS 13. As a result, upgrades such as Opti ID adoption...

Madhu | Jun 23, 2026 |