An improved version of the Sitecore 301 redirect module. Original version was created by Chris Castle. Now upgraded and compatible with Sitecore 9.1 (version 1.7)
Improvements by Chris Adams, Max Slabyak, Mark Wiseman, Thomas Baek, and timgriff84
Version 1.9:
Version 1.8:
Version 1.7:
Version 1.6.1:
Version 1.6:
Version 1.5:
Version 1.4:
Version 1.3:
Version 1.2:
Version 1.1.2:
Version 1.1.1:
encodeNames="true"
(used for Sitecore friendly URLs; most notably, this will make redirects work when dashes in URLs correspond to spaces in item names)Version 1.1:
The regular expression above in the "Requested Expression" field will match any request where the path portion of the URL begins with /old-site-area. For instance, a request to http://mysite.com/old-site-area/homepage will be processed by this redirect. As a side-effect, the path portion under /old-site-area ("/homepage") will be saved for later in a capture group called Path. This is the "^/old-site-area(?
Because Sitecore accepts URLs ending with .aspx, this regular expression will also process a request to http://mysite.com/old-site-area/homepage.aspx. This is not compulsory but recommended, otherwise you have 2 URLs pointing to one page. This can cause search engines to penalise your content for being duplicated twice on your site. Removing the .aspx extension will help make your content look like it only lives in one place. This is the "(.aspx)?" portion of the regular expression.
Lastly this regular expression accepts (but does not require) a query string, so this regular expression will also match a request to http://mysite.com/old-site-area/homepage.aspx?thesky=blue. This is the "(?
This looks complicated but it's not magic; it's just regular expressions. This is using .NET framework regular expression syntax. You can learn about regular expressions on Wikipedia and test a regular expression with Derek Slager's .NET Regular Expression tester.
OK, example time. A user just sent a request to http://mysite.com/old-site-area/homepage.aspx?thesky=blue. What happens?
^/MovedItem/?
/sitecore/content/MySiteRoot/Destination
Under the Content tab of /sitecore/System/Modules/Redirect Module
, Edit the field Items Which Always Process Redirects and add an item, eg. /sitecore/content/MySiteRoot/SomeItem/Path
^/SomeItem/Path/?\?(.*)name=OldValue(.*)
/sitecore/content/MySiteRoot/SomeItem/Path?$1name=NewValue$2
^/MovedItem(.aspx)?$
/sitecore/content/MySiteRoot/Destination
^/MovedItem(?<OptionalQueryString>\?.*)?$
/sitecore/Content/MySiteRoot/Destination${OptionalQueryString}
^/MovedSiteArea(?<Path>/.*?)?(.aspx)?(?<OptionalQueryString>\?.*)?$
/sitecore/content/MySiteRoot/NewLocationOfSiteArea${Path}${OptionalQueryString}
With thanks to RyanEaves, https://github.com/RyanEaves - originally from https://github.com/thecadams/301RedirectModule/issues/3
I needed to use this to migrate from a PHP based site, and it took some work to figure out how. So I thought I would share the knowledge. These instructions are for IIS6, although I'm sure you can derive how to do it in IIS7 easily.
Add the extension mapping in IIS for your site.
Go to properties for your site, Home Directory, Configuration button, Mappings tab, Add...
Executable: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
Note: The above path will be different for you if you use x64 or a different version of .net. Just use the same path that is mapped to the .aspx extension and it will work.
Extension: .php
All Verbs
Script engine: checked
Verify that file exists: UNCHECKED (very important)
Click OK
Tell Sitecore to process php files:
Sitecore.Pipelines.PreProcessRequest.FilterUrlExtensions
DONE! Now you can add rules to this module that redirect .php files.
You can do this exact same process for other extension types like .html, .jpg/.gif/.png, .pdf, etc as well if you need to redirect those.
Hope that saves someone a few hours of research!