Centralpoint Friendly URLs

This advanced module developed for IT and Developer personnel empowers you to configure query string and url schemas around your needs. This module gives you control over the rules which govern the URL strings created by your site. This is often required for multi site management, print friendly marketing campaigns and even search engine optimization.  


This module was designed for technically savvy administrators only. The powerful rule based engine can lead to difficult to understand configurations and potentially break existing URLs. Some common difficulties and pitfalls include:

  • All relevant routes are checked with every page load. Adding a large number of records to this module could affect the load time of every page in the site because the HttpModule executes on every page load and must check each route. URL generation is also executed multiple times per page load and a large number of complicated patterns may affect the performance of this feature. This is not an alternative to Admin > Error Messages/Redirects > Type = 404 Redirect. 404 Redirects are designed for migrating old dead URLs to new URLs and they are optimized to do that efficiently. Friendly URLs is designed for routing and generating the URLs of existing pages.
  • Domain and Audience routing requires a Navigation or Document route. Domain and audience routes won't apply if the Routing module property is set to Fallback mode and the navigation and document portion of the path is not routed. The "System: Extension-Less URLs with Fallback Routing" record was designed to route all standard Centralpoint navigation and document paths. Enabling this record or restoring it to it's original values will typically resolve this problem.
  • Routing is executed in the following order: Domain, Audience, and then Navigation & Document. If two records have the same order the newer record will be tested first. A preferred URL is chosen when building a URL in a slightly different way. When a document URL is being built records with specific documents selected will be tested first, and when a navigation url is built records with specific navigation items selected will be tested first. Records with no navigation item will always execute after those with specified values.
  • Only managed (ASP.NET served) requests are supported by default. If you wish to route non-managed requests like .htm, .css, or .custom extensions you must set run AllManagedModulesForAllRequests to true in the Root/Web.Config. This will cause all HttpModules, regardless of their preCondition attribute setting, to fire on all requests which could lead to performance problems and unexpected behaviors.
  • Conflicts may occur with the IIS URL Rewrite module. Similar redirects set up in the web.config or IIS could cause issues or even infinite loops. They should be removed from the web.config when they are added to this module.
  • Permanent redirects are cached at many levels. When the Redirection module property is set to enabled and Enable Permanent Redirection Cache is set to Yes the browser and proxies will cache the redirection. If the preferred URL is changed later it may lead to 404 errors until browser cache is cleared.
  • Changing URLs can lead to SEO problems. If the site has already been indexed by search engines you must ensure that the indexed URLs resolve properly including the appropriate canonical URL meta tags or redirect to the correct URL.
  • Domain routing skips Default.aspx. If the site is using features that require the domain to redirect to Default.aspx then you cannot enable records with Type = "Domain." Domain routing automatically loads the the Default Path without the redirect to Default.aspx and then to the default path. The most commonly used features that require Default.aspx and are incompatible with Type = "Domain" are Admin > URL Redirect to Audiences and Admin > IP Manager > Action = "Redirect".

Utilizing this module typically involves creating or enabling a record and testing the route and URL generation then testing all other routes to make sure they weren't negatively affected. It is highly recommended that you set up and test one record at a time being sure to include the test URLs in the Test URLs attribute. A unique Notes attribute will display for each Type selection which explains how to configure that type for routing and generation. By default all system pages will generate a canonical URL meta tag when the page is loaded on a non-preferred URL, but the Redirection module property can be enabled to redirect to the preferred URL instead. You can use the Friendly URLs module to perform many URL manipulation tasks, some of which include:

  • Supporting extensionless URLs. Enable the "System: Extensionless URLs with Fallback Routing" record to route and generate system URLs without the extension (.aspx). The legacy urls (including .aspx) will still be supported. If a hardcoded URL is accessed with the extension it will render normally including a canonical URL meta tag pointing to the preferred (extensionless) version of the URL. The path to all records will exclude the extension: /aud/nav or /aud/nav/doc.
  • Enforcing all lowercase URLs. Enable the "System: Extensionless URLs with Fallback Routing" record, add .aspx to the Preferred URL if you'd prefer to keep the extensions ({smi}{doc}.aspx), and set Admin > Properties > Web Site Generated URL Casing to "Lowered". If a hardcoded URL is accessed in a different casing it will render normally including a canonical URL meta tag pointing to the correct casing. Set the Redirection module property to "Case Sensitive (Enabled)" to force a permanent redirection to the correct URL and casing.
  • Supporting pathless audience homepages. Enable the "System: Pathless Audiences" record to route and generate system URLs that point to audience homepages without the homepage system name or extension. If a hardcoded URL is accessed with the homepage in the URL it will render normally including a canonical URL meta tag pointing to the preferred audience URL. This record will automatically utilize Site Architecture > Homepages > SystemName = "Home" for all audiences. If all audiences do not utilize this homepage you must create separate records for each audience/homepage combination. The path to all audiences will exclude the homepage: /aud.
  • Supporting pathless domain homepages. Enable the "System: Pathless Domains" record and make sure that the Default Path and Navigation relate to the homepage of the Main audience to route and generate system URLs that point to the main audience home page without the audience or home page system name or extension. If a hardcoded URL is accessed with the audience and homepage in the URL it will render normally including a canonical URL meta tag pointing to the domain only. Set the Default Path and Navigation attributes accordingly to use a different homepage. The domain alone will render the main audience home page: /.
  • Changing the audience system name. Create a new record with Type = "Audience", set the Pattern to the new audience system name supporting an optional trailing slash (custom-aud/?), set the Default Path to the home page portion of the URL (home), set the Preferred URL to the new audience system name (custom-aud), select the homepage under Navigation, and select a single Audience.  You may also want to change the Order to 95 if you want to the "System: Pathless Domains" record to execute first.
  • Changing the path to a document. Create a new record with Type = "Document", set the Pattern to the new path supporting an optional trailing slash (custom/doc/?), set the Preferred URL to the document path (custom/doc), select the Navigation, and select the Document. The selected navigation must have a page type of module and its module must include the selected document. The path will still contain the audience system name unless you have configured an audience specific domain: /aud/custom/doc.
  • Changing the path to an HTML page. Create a new record with Type = "Navigation", set the Pattern to the path supporting an optional trailing slash (custom/nav/?), set the Preferred URL to the navigation path (custom/nav), and select the Navigation. The path will still contain the audience system name unless you have configured an audience specific domain: /aud/custom/nav.
  • Changing the path to a module. Create a new record with Type = "Navigation", set the Pattern to the path including {doc} and supporting an optional trailing slash (custom/module{doc}/?), set the Preferred URL to the navigation path including {doc} (custom/module{doc}), and select the Navigation. The path will still contain the audience system name unless you have configured an audience specific domain: /aud/custom/module or /aud/custom/module/doc.
  • Using a custom extension instead of ASPX. Open the site's Root/Web.Config file and set runAllManagedModulesForAllRequests attribute to "true" in configuration/system.webServer/modules. This will cause all HttpModules, regardless of their preCondition attribute setting, to fire on all requests which could lead to performance problems and unexpected behaviors. Disable the "System: Extensionless URLs with Fallback Routing" because this new record will handle all system URLs. Create a new record with Type = "Navigation", set the Pattern to include the custom extension ({smi}{doc}\.custom), set the Preferred URL to include the custom extension ({smi}{doc}.custom), and select All Site Map Items under Navigation. The path to all records will end in the custom extension (.custom): /aud.custom, /aud/nav.custom, or /aud/nav/doc.custom.
  • Configuring an audience specific domain.Create a new record with Type = "Domain", set the Pattern to the audience specific domain (www\.yourdomain\.com), set the Default Path to the homepage portion of the URL (home), set the Preferred URL to the audience specific domain (www.yourdomain.com), select the homepage under Navigation, and select a single Audience to generate fully qualified URLs in canonical URL meta tags using your audience specific domain. By default audience specific domains do not support or generate the audience system name in the URL. If your site contains hardcoded URLs which include the audience system name they will return 404 errors which will be detected automatically by the error handler and redirected to the same URL without the audience system name regardless of the selection in the Redirection module property. If you would prefer to maintain the audience system name in the URL it should be included in the Default Path (main/home).
  • Configuring a preferred domain. Create a new record with Type = "Domain", set the Pattern to catch all potential domains (.*), set the Preferred URL to your preferred domain (www.yourdomain.com), and select the related Audiences to generate fully qualified URLs in canonical URL meta tags using your preferred domain.
  • Requiring HTTPS on a specific domain. Create a new record with Type = "Domain", set the Pattern to catch all potential domains (www\.yourdomain\.com), and select Yes under Requires HTTPS to generate fully qualified URLs in canonical URL meta tags using your preferred scheme. Set the Redirection module property to "Enabled" to force a permanent redirection to the correct scheme.
Related Taxonomy