Friendly URLs

URLs that are optimized for search engines also make it easier for website visitors to navigate to and throughout your website. Friendly URLs preclude the need for visitors to have to write down or memorize hard to remember addresses. Furthermore, an optimized URL better represents the contents of a content item and its location on the website which means that visitors can more quickly find what they are looking for. Because optimized URLs benefit both search engines and visitors, they are referred to as "friendly URLs".


See also the website_settings section of the General tab of the Setup Tool for more information about settings that influence how friendly URLs are constructed in XperienCentral.


In This Topic



Friendly URLs in XperienCentral

When XperienCentral's SEO component is installed, theoretically all URLs for your website are friendly. The friendly URL for pages is constructed using the page's location in the navigation tree together with the URL title, navigation title, or page title (depending on how SEO is configured). For example, if a page has the title "XperienCentral", then the URL of the page will be .../xperiencentral.htm (or .html). With SEO disabled, the URL of a page is not created using the page's friendly URL title, instead an internal ID as assigned to pages within XperienCentral is used, for example .../id=77581/langid=42. For search engines and users, the unfriendly URL provides no useful meaning regarding the contents of the page and/or its location in the website's navigation hierarchy.


How Friendly URLs are Constructed

The friendly URL of an item in XperienCentral includes the relative path to the item based on the structure of the navigation tree, the title of the item and an extension, in much the same way that a path for a file is delineated in a file system. The precise URL that an item will be assigned is derived using a set of rules that evaluate the item's title(s) as well as its location in the website's navigation hierarchy. In XperienCentral, you can assign the following three titles to pages/content items:

TitleDescription
URL TitleThe title to use in the friendly URL for the item.
Navigation TitleThe title that will be used for the page in your website's navigation tree. Navigation titles only apply to pages.
Page/Content item titleThe title of the item itself that appears when the page or content item displays in the browser.


When determining which of the three titles to use in the friendly URL, the following title sequence is stepped through by XperienCentral:

  1. URL title. If there is a URL title assigned to a page or item, it takes precedence and is always used in the friendly URL. The path and friendly URL extension, prefix, and separator will be added to the URL title.
  2. Navigation title (pages only). If a page has no URL title assigned to it, the navigation title is used in the friendly URL. The path and the friendly URL extension, prefix and separator will be added to the navigation title, .
  3. Item title. If the page/content item has no URL title or navigation title assigned to it, the title of the item itself is used in the friendly URL. The path and the friendly URL extension, prefix and separator will be added to the title. If a page has no navigation title, the title of the page is also used as the navigation title in the navigation tree of the website.

The table below shows what the URL for items in a tree structure would be for some sample pages. The values in the following examples assume the following:

  • The URL's extension is set to .htm. The extension is defined by the friendly_url_extension setting in the General tab of the Setup Tool).
  • The separator symbol, which is substituted for spaces that appear in titles, is a dash (-). The separator symbol is defined by the friendly_url_separator setting in the General tab of the XperienCentral Setup Tool. The default is a dash (-).


TitleNavigation TitleURL TitleFriendly URL
Welcome to GXWelcome
/welcome.htm
   News

welcome/news.htm
      Articles

welcome/news/articles.htm
      News Archive

welcome/news/news-archive.htm
   Products overview
Productswelcome/products.htm
      XperienCentral

welcome/products/xperiencentral.htm


For Content Repository items, the situation is a bit different. Because Content Repository items do not have navigation titles, only the URL title or the title of the item itself is used in the friendly URL. If a content item has a URL title, it is used in the friendly URL, otherwise the title of the content item itself is used. The exact friendly URL that a content item will have when it is viewed depends on the page on which it is displayed.

For example, if a content item has the title "GX releases XperienCentral 10", the friendly URL of the content item is 'GX-releases-XperienCentral-10.htm'. There is no hierarchical structure prefixed internally to the friendly URL of the content item because it is stored in the Content Repository. When the content item is displayed on a page, the hierarchical structure of the 'display on' page is prefixed to the content item's friendly URL with the result being the friendly URL for the page and the content item. Based on the example friendly URLs shown in the table above, the friendly URLs for the following sample content items would be:


Content Item TitleDisplay on PageFriendly URL
XperienCentral 10Productswelcome/products/xperiencentral-10.htm
EngagementArticleswelcome/news/articles/engagement.htm
Version 10XperienCentralwelcome/products/xperiencentral/version-10.htm

The example Friendly URLs in the table above do not take into account the configuration of the seo_path setting on the General tab in the Setup Tool.

Google News ID for Articles

If the Google News ID has been enabled in XperienCentral, the friendly URL of content items is generated in a slightly different manner. A unique ID (number) is prefixed to the part of the friendly URL just before the title of the article, for example,.../02041/GX-releases-XperienCentral-version-10,htm. This is done in order to satisfy a requirement of the Google News article aggregation service.

Uppercase and Lowercase Letters in Friendly URLs

XperienCentral does not distinguish between uppercase and lowercase letters when resolving URLs. That is, the URLs http://www.gxsoftware.com/Welcome.htm and http://www.gxsoftware.com/welcome.htm resolve to the same address. While friendly URLs in XperienCentral can be a mixture of uppercase and lowercase letters as displayed in the address bar of a browser, all versions of an address using a mixture of cases are the same.

Second Friendly URL

In addition to the friendly URL, a content item can also be navigated to from a second friendly URL that omits the friendly URL separator. For example, if the friendly URL separator is a dash (-) and the friendly URL for a page is

gx-products.htm

then the above page is also available at the friendly URL

gxproducts.htm


Back to top



Page Title Uniqueness

In XperienCentral it is not required that all web pages have a unique title. Because the friendly URL is determined based on the title of a page plus its location in the navigation structure, two or more pages can have the same title and not have friendly URL conflicts. For example:

Parent Page Title(s)Page TitleFriendly URL
GX/SupportContactgx/support/contact.htm
GX/SalesContactgx/sales/contact.htm
GX PublicContactgx-public/contact.htm

In the example above, the "Contact" pages all have the page title "Contact" but because of their relative locations in the site structure, the friendly URLs for the pages remain unique. Given the fact that the friendly URL is determined by a page's title (URL, navigation, page), the following situation in which three pages in the same tree have the same page title also does not lead to friendly URL conflicts:

Parent Page Title(s)URL TitleNavigation TitlePage TitleFriendly URL
GX/SalesContacting
Contactgx/sales/contacting.htm
GX/Sales
Contact usContactgx/sales/contact-us.htm
GX/Sales

Contactgx/sales/contact.htm


The example Friendly URLs in the tables above do not take into account the configuration of the seo_path setting on the General tab in the Setup Tool.



Back to top



Content Item Title Uniqueness

In XperienCentral, content items must have a unique friendly URL title compared to the following:

  • All titles used in the friendly URL of all other content items in the Content Repository (URL title/ content item title)
  • All titles that are currently used in the friendly URL of a page (URL title, navigation title, page title)
  • All titles that are currently used in the friendly URL of all pages in all channels where the content item can appear
  • All friendly URLs assigned to external (database) objects

This is because content items can be displayed on any page and therefore XperienCentral has no way of determining at the time that a content item is created where it will be displayed and therefore what its full friendly URL will be. XperienCentral only compares the friendly URL of newly created content items to last part of all existing friendly URLs. For example, creating a content item that resolves to the friendly URL 'Contact.htm' would lead to a friendly URL conflict with all the pages in the following table:

Parent Page TitlesURL TitleNavigation TitlePage TitleFriendly URL
GX/PublicContact
Contacting usgx/public/contact.htm
GX/Sales
ContactContact GXgx/sales/contact.htm
GX/Support

Contactgx/support/contact.htm


In XperienCentral, when two pages/items attempt to resolve to the same friendly URL, the conflict is resolved automatically. The mechanism for resolving friendly URLs is fully described in How Friendly URLs are Constructed.


The example Friendly URLs in the table above do not take into account the configuration of the seo_path setting on the General tab in the Setup Tool.



Back to top



Friendly URL Claiming

In XperienCentral, it is possible for two or more pages/items to resolve to the same friendly URL as a result of your website's structure. This can occur, for example, when through a combination of URL titles, navigation titles, and/or item titles, the calculated friendly URL for two or more pages/items turns out to be identical. Naturally, only one item can claim a specific unique friendly URL if this occurs. All other items that try to claim a friendly URL that is already claimed (in use) will be automatically assigned a different friendly URL in order to resolve the conflict.

XperienCentral determines which item claims a friendly URL in a straightforward manner: The item that was created first claims the friendly URL it wants — All other items that try to claim that friendly URL are assigned a different, unique URL based on the name of the original. For items that attempt to use a claimed URL, a dash (-) plus a number is appended to the end of the original friendly URL and that is used in the address for the item. The number increments by one for each successive item that wants to claim the original friendly URL in the order they are created. The following simple example assumes that the pages are assigned no URL or navigation title but share the same page title in the same tree structure:

Order CreatedPage TitleFriendly URL
1Contactcontact.htm
2Contactcontact-1.htm
3Contactcontact-2.htm
4Contactcontact-3.htm


As you can see above, if you create a page named "Contact" and then later another with the same name in the same tree structure, the second page will be assigned the friendly URL "Contact-1.htm", the third "Contact-2.htm", and so forth.

The example above shows how page titles that attempt to claim the same URL are resolved. It is also possible to have URL conflicts that are the result of more complicated circumstances, such as URL titles and/or navigation titles that conflict with a page or object title or navigation titles that conflict with each other, content item titles that conflict with a page's friendly URL, and so forth. The following table shows what the URL result would be for conflicts at a variety of title and navigation title levels.

Order CreatedURL TitleNavigation TitlePage TitleFriendly URL
1Contact
Contactcontact.htm
2
Contact
contact-1.htm
3
Contact usContactcontact-us.htm
4

Contactcontact-2.htm
5Contact
Contacting GXcontact-3.htm


Back to top




The following applies to XperienCentral versions R36 and higher.

Friendly URL Conflict Indicator

When you create a new content item, XperienCentral assigns a friendly URL to it based on the rules explained in the previous sections. For each new content item you create, a check is made to see whether the requested friendly URL is available. If the friendly URL that the content item wants is available, it is granted. If, however, the friendly URL is already in use, a message will appear in the "Properties of all versions" section of the SEO tab in Content Item Properties indicating that the desired friendly URL is already in use and that a new friendly URL has been assigned to the current content item. A friendly URL can already be used by another content item or it can also be a reserved context path. For example, the friendly URL "Contact" is already claimed by another content item. When the page below entitled "Contact" is created, an indicator that the friendly URL is already claimed displays in the SEO tab of the Content Item Properties panel:



In the example above, the message that displays is: "/contact-1.htm". In this case, because the friendly URL "contact.htm" is already claimed, the current content item is automatically assigned the URL "contact-1,htm" to ensure that all friendly URLs remain unique.  The above action is performed on all XperienCentral content items that attempt to use a friendly URL that is already claimed. To link to the content item that is claiming the friendly URL that the current content item wants, click the name of the item that is claiming the friendly URL that you want to use in the indicator ("Contact" in the example above).

Likewise, when a content item attempts to claim a friendly URL that is a reserved context path, that is indicated. For example:



In the example above, "salesforce" is a reserved context path. If you create a content item with the same name, you will see a message similar to that shown above.

When the friendly URL you want to use for an item is already claimed, you have the following options:

  • Accept the friendly URL as assigned by XperienCentral.
  • Rename the title (URL, navigation, page) of the current content item that is attempting to use the claimed friendly URL to a desired, unclaimed friendly URL.
  • If the title of the content item itself conflicts with a claimed friendly URL but you nevertheless want to continue using it, add an unused navigation or URL title that does not produce a friendly URL conflict. For page title conflicts, you can also make use of an alternate URL path to avoid the conflict. Alternate URL paths are described in detail in Using Alternate URL Paths.
  • Release the URL from the content item that is claiming it so that it can be used by the current content item. See Releasing Claimed Friendly URLs for complete information.
  • If the conflict is caused by a reserved context path, you must either select a different URL or modify the reserved context path in the application_settings section of the General tab in the Setup Tool.



Back to top



Maintaining Friendly URLs

The XperienCentral SEO component maintains a comprehensive overview of all your website's URLs. From a central location you can generate various reports for the friendly URLs currently in use on your website. This makes it possible to easily manage your website's friendly URLs and also to ensure that pages and content items have the friendly URL that you want them to have. The SEO component can generate the following friendly URL overviews:

  • Overview of all friendly URLs (.exported CSV file)
  • All items with more than one friendly URL
  • All items without friendly a URL
  • Items that want the same friendly URL

Generating an Overview of All Friendly URLs

The SEO component allows you to generate a comprehensive list of all friendly URLs on your website. The overview is exported in the form of a file containing comma separated values (CSV) that you can open in another application, such as Microsoft Excel, in order to view and search through the list. Follow these steps:

  1. Navigate to Configuration > SEO.
  2. On the [Overview] tab, select "All friendly URLs" from the drop-down list.
  3. Click [Download overview].
  4. A standard Open/Save dialog box will open in the browser. Click [Open] or [Save][Open], the exported file will open in the application associated with .csv files. If you click [Save], you can specify the name of the file (export.csv by default) and the location where you want to save it.

In the overview, the column headings have the following meanings:

HeadingDescription
idAn internal identifier for the friendly URL within XperienCentral. IDs are assigned in the order that friendly URLs are created, beginning with 1 and incrementing by 1 for each new friendly URL.
URL titleThe title of the friendly URL as derived from the URL title, navigation title, or page/content item title.
Normalized URL titleThe friendly URL title after it has been normalized. Normalizing URL titles is necessary in order to ensure that they are valid for browsers. The normalizing of friendly URL titles is described in detail in the section URL Title Standardization.

Note: The normalized URL title as it appears in the exported list does not preserve case usage and does not contain the separator symbol that is substituted for spaces in the friendly URL
QuerystringAn internal string that XperienCentral uses to retrieve pages, content items, and external database objects. The query string syntax for each item type within XperienCentral has a unique form, for example:
  • Pages - &id=43137&langid=42
  • Media Repository articles - &contentid=3
  • External objects - &dbid=12901&typeofpage=40054
Current URL TitleSpecifies the identifier (from column 1) that is the current friendly URL for this item. If an item contains an entry in this column, it means that it is no longer an active URL: When this friendly URL is navigated to, the visitor will be redirected to the friendly URL referenced by the id in 'Current URL title' instead.See Maintaining Items with More Than One Friendly URL for more information.
WebsiteIDAn internal identifier that refers to the channel that the page belongs to. Content Repository items are assigned the value "-1" because they can appear in any channel in the configuration and therefore do not belong to a specific one.


Maintaining Items With More Than One Friendly URL

As a result of many factors, it is possible that a page or item can have a claim on more than one friendly URL. This can occur if the URL, navigation or page title of a page or content item is changed or renamed or if a page is moved from one location to another in the navigation structure. Whenever a page or content item is saved, a friendly URL for it is calculated — if any changes occur to the friendly URL of a page or content item, it receives a new friendly URL based on the current circumstances and also keeps the previous URL(s) it once had which now act as redirects. This is explained in more detail in Maintaining the URL History of Pages and Content Items.

To generate a list of all items that are claiming more than one friendly URL, follow these steps:

  1. Navigate to Configuration > SEO.
  2. On the [Overview] tab, select "All items with more than one friendly URL" from the drop-down list. The list is generated. Each item with more than one friendly URL is shown against a light gray background with its currently active friendly URL. Each of the other friendly URLs being claimed by the item is listed below it. In the middle column the item sort is indicated (page, content item, or database object) along with its ID.
  3. If you want to release one or more friendly URLs that an item is claiming to make it available again on your website, select "Delete" next to the URL(s).
  4. Click [Apply]. The friendly URLs will be released and can now be used by other items on your website. This task can also be performed on individual content items and pages. For more information, see Deleting URLs from a Page or Content Item's URL History.


Maintaining Items That Want to Claim the Same Friendly URL

When a content item or page is created that attempts to use a claimed friendly URL, it is assigned a unique URL based on the title of the URL it wants as described in Friendly URL Claiming. To see the items on your website attempting to claim a friendly URL that is already in use, follow these steps:

  1. Navigate to Configuration > SEO.
  2. On the [Overview] tab, select "Items that want the same friendly URL" from the drop-down list. The list is generated,

    The friendly URLs with multiple claim attempts are shown against a light gray background. Below that, the page or content item that currently has the claim is listed followed by the other page(s)/content item(s) that want the same friendly URL and the language the page/content item is in. In the middle column the item type is indicated (Page, Media item, or database object) and in the fourth column the ID of the item is listed.To navigate to an item, click its link in the far left column. The item will appear in the Workspace where you can further examine it. See Releasing Claimed Friendly URLs for information on how to change which page/content item has the claim on a friendly URL.

Availability of the Friendly URL Indicator

If the original friendly URL becomes once again available, an indicator appears in the list of items that want the same friendly URL in the form of green text that appears next to the title of the friendly URL that had multiple claims. The message indicates that the friendly URL is once again available as shown in the following example ("URL is available again").

Maintaining Items with No Friendly URL

In theory, all items in XperienCentral have friendly URLs. If, however, items don't have a friendly URL, you can easily add friendly URLs to them. To see the items that have no friendly URL, follow these steps:

  1. Navigate to Configuration > SEO.
  2. On the [Overview] tab, select "All pages without friendly URLs". The items without a friendly URL are listed. If any items appear in the list, you can manually recalculate the friendly URL for some or all items on your website.
  3. Click the [Friendly URLs] tab.
  4. Select the type of recalculation to be performed:
    • Calculate the friendly URL for all items which have no friendly URL yet. A friendly URL will be assigned only to the selected items currently lacking a friendly URL.
    • Recalculate the friendly URL for all items. A friendly URL will be calculated for all the selected items belonging to the current channel. The URL history for pages and content items will be preserved.
  5. Select the items for which the friendly URL calculation will be performed: "Pages" or "Content Repository items".
  6. Click [Calculate]. Items with no friendly URL will be assigned one.



Back to top




The following applies to XperienCentral versions R36 and higher. This documentation is meant for developers and application managers.

Running XperienCentral without a Friendly URL Extension

It is possible to run XperienCentral without using a friendly URL extension. This means that URLs like /contact are possible. In order to activate this feature, a few changes need to be made to both the configuration of Apache and XperienCentral.

Updating the Apache Configuration

In an existing Apache environment, the following configuration is usually used to route traffic from Apache to XperienCentral:

R35 and earlier

RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule ^/(.*)\.htm$ /web/$1.htm [PT,L]

R36 and later

RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_URI} !^/admin/
RewriteRule ^/(.*)\.htm$ /web/seo/$1.htm [PT,L]


When the friendly URL is blank (extensionless), it can no longer be redirected. Use the following code to run XperienCentral without a friendly URL extension.


DirectoryIndex index.html 

<IfModule mod_rewrite.c>
   RewriteEngine On

   #Optional to make sure that old urls are redirected to XC properly
   RewriteRule ^(.*).htm$ $1 [R=301,L]

   RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
   RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_URI} !^/web/ 
   RewriteCond %{REQUEST_URI} !^/systemlogs 
   RewriteCond %{REQUEST_URI} !^/static
   RewriteCond %{REQUEST_URI} !^/upload
   RewriteCond %{REQUEST_URI} !^/upload_mm
  RewriteRule ^(.*)$ /web/seo$1 [PT,L]   
</IfModule>


In order to active extensionless friendly URL's in XperienCentral, the following steps should be executed:

Update the Friendly URL Setting application_settings.friendly_url_extension

In the General tab of the Setup Tool, clear the above field.

Clearing the cache

Since the cached files in XperienCentral contain links with the extension still included, the cache should be cleared entirely (see Server Configuration). There are two ways to do this. You can either use "Initialize caching" or set all the other timestamps. Initialize caching should only be used on an environment which is not currently in production. When the server is not running in production you can use the Initialize caching option and then reindex the frontend search index to preload the cache before going live again.

The other option is to click "Update timestamps" for all options except for "Initialize caching". This means that a page is refreshed in the background after it's been served from the cache the first time it was requested after the timestamps have been updated. This does mean that the user that requests the page for the first time after the timestamps have been set will be served a cached version with links that won't work. In order to prevent the user from getting 404 errors, you can configure Apache to rewrite any URLs containing the old extension to the version without the extension. See "Updating the Apache Configuration" above for an example.

Reindex the Frontend Index

The frontend index contains links with the old friendly URL extension, so in order to fix that the frontend search index should be rebuilt. If the Apache RewriteRule to strip the extension from any incoming URLs is used, this may be done in production because the old URLs will be rewritten by Apache to the new format.

Configure Reserved Context Paths

When running XperienCentral without an extension, a few paths should be added to the application_settings.reserved_context_paths (see reserved_context_path) in the General tab of the Setup Tool. The following values should be added:

  • web
  • static
  • upload
  • upload_mm
  • cfg
  • info
  • wm