Extensionless and custom URLs

You can configure the system to use extensionless URLs or custom URL extensions.

Setting up extensionless URLs

URLs without extensions are the standard for most websites. For example: http://www.example.com/news

To use extensionless URLs, you only need to adjust the settings in the Kentico administration interface:

Make sure that your server fulfills the minimum system requirements (when using IIS 7.5, the operating system must have Service Pack 1 installed).

  1. Open the Settings application.
  2. Select the URLs and SEO category.
  3. Set the Friendly URL extensions setting to an empty value.
  4. Click Save.

Now when you go to the live website, the system renders all URLs in menus and listings without an extension. You may need to manually update static links that were created with the default .aspx extension.

Using custom URL extensions

Custom URL extensions allow you to change the default .aspx extension to .html, .asp, .php, or any other value.

For example, instead of the default http://www.example.com/news.aspx, you can have URLs ending with .html:

http://www.example.com/news.html

To use custom URL extensions, take the following steps:

  1. Adjust your web.config or IIS to handle custom extensions
  2. Configure custom URL extensions in the Kentico settings

Configuring IIS to allow custom extensions

Note: This procedure only works if your site in IIS uses an Application Pool with Managed Pipeline Mode set to Integrated.

  1. Edit your application’s web.config file.

  2. Find the <modules> element inside the system.webServer section directly under the web.config root (i.e. not under a specific <location> element).

  3. Set the runAllManagedModulesForAllRequests attribute to true for the opening <modules> tag:

    
    
    
     <system.webServer>
       ...
       <modules runAllManagedModulesForAllRequests="true">
         <remove name="WebDAVModule"/>
         <remove name="XHtmlModule"/>
         <remove name="CMSApplicationModule"/>
         <remove name="UrlRoutingModule-4.0"/>
         ...
       </modules>
     ...
     </system.webServer>
    
    
     

Setting up extensions in IIS manually (obsolete)

The following approach is not recommended and considered obsolete. Only use the manual setup for sites with an application pool in Classic Managed Pipeline Mode.

For example, to use the .html extension, go through the following steps:

  1. Run Internet Information Services (IIS) Manager.
  2. Select your website.
  3. Open Handler mappings.
  4. Click to Add managed handler…
  5. Enter the following values:
    • Request path: *.html
    • Type: System.Web.DefaultHttpHandler
    • Name: HTML
  6. Click OK.

You can now configure the extensions in the Kentico administration interface.

Setting custom URL extensions

Once you have performed the required low-level configuration, set the URL extensions in the Kentico administration interface:

  1. Open the Settings application.
  2. Select the URLs and SEO category.
  3. Type the required extension into the Friendly URL extensions setting, for example: .html
  4. Click Save.

Now when you go to the live website, the system renders all URLs in menus and listings with the specified extension. You may need to manually update static links that were created with the default .aspx extension.

Using multiple extensions

You can enter multiple extensions into the Friendly URL extensions setting. Use the following rules:

  • The first extension is used as the default.
  • Enter other extensions, separated by semicolons. Pages can be accessed through URLs ending with all entered extensions.
  • To allow extensionless URLs in combination with other extensions, enter a semicolon without an extension.

Examples:

  • ;.aspx - extensionsless URLs by default, also allows aspx
  • .html;.htm;;.asp - html extension by default, also allows htm, extensionless and asp

If you enable the Redirect pages to main extension setting in Settings -> URLs and SEO, the system redirects URLs with non-default extensions to the corresponding URL with the default extension. This can be useful for SEO purposes. For example, if you want to change your site’s URL extension, and use the new extension when the pages are accessed from a search engine that has your website indexed with the old extension.

Page-level extension settings

In addition to the global settings, you can set URL extensions for individual pages. The default extension that appears in the browser address bar when opening pages is always taken from the global settings.

  1. Open the Pages application.
  2. Select the page in the content tree.
  3. Switch to the Properties -> URLs tab.
  4. Select the Use custom URL extensions check box.
  5. Type the required extensions using the same rules as described above.
  6. Click Save.

Even if the Use custom URL extensions option is disabled, files (cms.file pages) can be accessed under their physical extensions.

Advanced URL extension settings

By default, the system adds the .aspx extension to URLs when a postback occurs on the page. To ensure that the URL remains extensionless or with a custom extension after the postback, add the following key to the appSettings section of your web.config file:




<add key="CMSUseExtensionOnPostback" value="false" />


If you are using trailing slashes (enabled through the Use URLs with trailing slash setting in Settings -> URLs and SEO), you can configure the system to only add the trailing slash for extensionless URLs. Add the following key to the appSettings section of your project’s web.config file:




<add key="CMSUseTrailingSlashOnlyForExtensionLess" value="true" />


With the key set to true, URLs with an extension do not have the trailing slash appended.