CMS configuration

Note: Default values (in the example) are provided when installing the Better CMS NuGet package.

Main CMS Configuration

cms section attributes:

  • useMinifiedResources: boolean. Indicates if minified resource files (CSS/JS) should be used. Default value: true.
  • resourcesBasePath: string. The path for resource (CSS / JS) files. Use (local) for local resources (from Better CMS dll's). Default value: //{bcms.version}/.
  • webSiteUrl: string. Used for generating full URLs (e.g. file download URLs). Default value: Auto. When using Auto, the current web site URL is used.
  • pageNotFoundUrl: string. CMS page for 404 errors. Leave empty if custom errors are used in web.config. Default value: /404/.
  • workingDirectoryRootPath: string. Folder where CMS creates system files (e.g. data migrator versions info file). Default value: ~/App_Data/BetterCms.
  • articleUrlPattern: string. Default value: /articles/{0}/.
  • urlMode: string. Indicates how page URLs should be stored in the database. Possible values: NoTrailingSlash (e.g. /my-page - last slash is trimmed by default), TrailingSlash (e.g. /my-page/ - last slash is added by default), Mixed (e.g. /my-page/ or /my-page).Default value: TrailingSlash.
  • renderContentEndingDiv: boolean. Indicates if content-end DIV should be rendered when in non-edit mode. Default value: true.
  • contentEndingDivCssClassName: string. If renderContentEndingDiv is set to true, this line indicates what CSS class name should be used for rendering DIV. Default value: bcms-clearfix.
  • enableMultilanguage: boolean. If enableMultilanguage is set to true, this line indicates that multilanguage should be enabled (read more here).
  • enableMacros: boolean. If enableMacros is set to true, an additional field will be available while editing sitemap nodes that can be used to store custom data needed for your web application.


      enableMacros="true" >

URL Patterns

  • urlPatterns collection. By default, the expression /(bin|app_code|app_globalresources|app_localresources|app_data|app_browsers|theme)/ is added. URL patterns are used for preventing the creation of page paths, which contain invalid folders (e.g. IIS blocks all paths, which contains /bin/, /app_code/, etc. ).


    <add expression="\/(bin|app_code|app_globalresources|app_localresources|app_data|app_browsers|theme)\/" ignoreCase="true" negate="true" description="{0} cannot contain these as directories: bin, App_Code, App_GlobalResources, App_Localresources, App_Data, App_Browsers, Theme" />

Users Module Configuration

The users section is only added if BetterCMS.Module.Users is installed.

  • createDefaultUserOnStart: boolean. If set to true, Better CMS will check for existing users upon initial start up. If no users exist, the user well be redirected to the user registration form, where a new user with admin roles can be created.
  • enableCmsFormsAuthentication: boolean. If set tot true, routes /login and /logout are registered and user login form is provided.


<users createDefaultUserOnStart="true" enableCmsFormsAuthentication="true" />

Installation Configuration

The installation section is used to configure which pages are installed by default when running Better CMS for the first time. Later, this section can be deleted.

  • Install404ErrorPage: boolean. If set to true, the page with url /404/ is installed. Default value: true.
  • Install500ErrorPage: boolean. If set to true, the page with url /500/ is installed. Default value: true.
  • InstallDefaultPage: boolean. If set to true, the page with url / is installed.Default value: true.


<installation Install404ErrorPage="true" Install500ErrorPage="true" InstallDefaultPage="true"></installation>

Storage Configuration

Storage configuration is discussed here.

Cache Configuration

cache section attributes:

  • enabled: boolean. Default value: true.
  • cacheType: string. Possible values: HttpRuntime (cache is saved to memory), Auto (using CMS caching providers. For example, BetterCms.Module.AppFabricCache module can be used, if it's installed), Custom (custom caching providers).Default value: HttpRuntime.
  • timeout: .

When cacheType is set to Custom, add an additional setting with the key typeName and value with reference to the custom cache engine:

<cache enabled="true" timeout="00:10:00" cacheType="Custom" >
    <add key="typeName" value="BetterCms.Sandbox.Mvc4.Custom.CustomCacheTest, BetterCms.Sandbox.Mvc4" />

Database Configuration

database section attributes:

  • schemaName: string. Default dabatabase schema name. Default value: dbo.
  • connectionStringName: string. Connection string name, refering to configuration section's connectionStrings item.Default value: DefaultConnection.
  • databaseType: string. Possible values: MsSql2008, MsSql2005, MsSql2000. Default value: MsSql2008.


<database schemaName="dbo" connectionStringName="BetterCms" databaseType="MsSql2008" >   </database>

Security Configuration

security section attributes:

  • accessControlEnabled: boolean. Indicates if access control security is enabled. Default value: false.
  • fullAccessRoles: string. Indicates role name(s) that will have full access. Default value: Owner.
  • encryptionEnabled: boolean. Determines if HTML content encryption is enabled. If set to true, HTML content and HTML widgets content are encrypted using encryptionKey key. Default value: false.
  • encryptionKey: string. If encryptionEnabled is set to true, this key is used to encrypt / decrypt saving / loading content.

defaultAccessRules configuration section attributes:

  • defaultAccessLevel: string. Possible values: ReadWrite, Read, Deny. Default value: ReadWrite. Defines default access level for object with no access rules when access control is enabled.

defaultAccessRules items attributes:

  • identity: string. User name or role name.
  • accessLevel: string. Possible values: ReadWrite (user/role can edit content), Read (user/role can only read content), Deny (content is denied for user/role). Default value: ReadWrite.
  • isRole: boolean. Indicates if identity is user or role.

By default, role 'Everyone' with 'Deny' access level and role 'Authenticated Users' with access level 'ReadWrite' are added. Example:

<security accessControlEnabled="true" fullAccessRoles="Owner" encryptionEnabled="false" encryptionKey="bettercmstest">
    <defaultAccessRules defaultAccessLevel="ReadWrite">
        <add identity="Everyone" accessLevel="Deny" isRole="true" />
        <add identity="Authenticated Users" accessLevel="Read" isRole="true" />

The customRoles section is used for mapping custom roles to Better CMS roles. Read more about roles mapping here.

For example:

<security fullAccessRoles="Owner">
    <add permission="BcmsEditContent" roles="User" />
    <add permission="BcmsPublishContent" roles="User" />
    <add permission="BcmsDeleteContent" roles="User, Admin" />
    <add permission="BcmsAdministration" roles="Admin" />

Search Configuration

Search configuration is discussed in the Lucene search module setup instructions and Google site search module setup instructions.

Sitemap Configuration

It is possible to specify if the "Add to sitemap" dialog needs to be shown after page creation, clone and translation. Sitemap configuration should be placed under modules section within pages module.

Available attributes:

  • enableAddNewPageToSitemapAction: boolean. Indicates if the dialog needs to be shown after page creation.
  • enableAddNewTranslationPageToSitemapAction: boolean. Indicates if the dialog needs to be shown after page translation.
  • enableAddClonedPageToSitemapAction: boolean. Indicates if the dialog needs to be shown after page cloning.


    <module name="pages">
        <add key="enableAddNewPageToSitemapAction" value="true"/>
        <add key="enableAddNewTranslationPageToSitemapAction" value="false"/>
        <add key="enableAddClonedPageToSitemapAction" value="false"/>
    <!-- ... -->