Ceon URI Mapping (SEO)

The Ceon URI Mapping module is a very handy module that no Zen Cart site should be without!

Unlike other SEO modules, where the URIs are generated automatically when a customer visits a page, this module allows you to generate the URIs automatically within the admin, or even to enter your own specific URIs for each product/category/EZ-Page/Zen Cart page.

We believe this to be a much better solution as you are in control of your URIs.

It's quick and easy to set up URIs for your products/categories/EZ-pages, and the module has a minimal impact on your server as it is very lightweight.

Improve your rankings in search engines and give potential customers easy to remember/enter URIs - check out the full feature list:

Use Static URIs to Make Web Addresses Easier To Remember and Easier To Enter. Improve your Rankings in Search Engines!

* Implementing a major part of all SEO (Search Engine Optimisation) practices, this module lets you specify static, keyword-based URIs to be used instead of dynamic, ID-based URIs.

For example - for a product - instead of dynamic URIs like this:

A static address, full of keywords, could be specified for the product:

[New for 3.0.0] Historical URI Mapping - No More Broken Links!

* Each Product/Category/EZ-Page/Zen Cart Page (subject) with URI mapping(s) has a single “Current” URI.

* Any number of URIs can map to the same subject. However, when a customer uses a URI which is not the “current” URI they are quickly and automatically redirected to the “current” URI. This occurs before the site begins to display, so is completely transparent.

* “Deleted”/“Previous” URI mappings still point towards their original subject, by redirecting the user to the “Current” URI for the subject (unless they have become overridden by a current or newer URI mapping which uses the same URI of course!).

Easy-to-use Admin Integration for Categories, Products and EZ-Pages

* Specifying custom URI mappings for Categories, Products and EZ-Pages is quick and easy.. just browse to the appropriate Category/Product/EZ-Page in the admin and enter the URI to be used in the text fields added by the module, or tick the “auto-generate” check box, if auto-generation is enabled!

* Change existing Product/Category/EZ-Page URI mappings in the same easy manner!

URI Mapping Auto-generation

* The module comes with very powerful, flexible and easy-to-use URI mapping auto-generation functionality.

* If auto-generation is used to create a URI mapping for a Product, Category or EZ-Page it automatically capitalises the Product/Category Name or EZ-Page title according to your preferred settings, replaces any whitespace with your preferred character, removes selected words and replaces particular characters/strings as specified in the configuration utility.

Full Multi-language Support - including Transliteration and UTF-8!

* The module is fully multilingual - every page can have a URI mapping for each language supported by the store!

* This means that the site will probably feature much higher in search engine listings specific to the various languages the store supports!

* The module also has full support for transliteration! When using the URI mapping auto-generation functionality it transliterates the names/titles from any language into plain ASCII, the format used by URIs.

* Transliteration support means that characters outside of the standard character set allowed in URIs won't just be stripped from the URI, leaving words with letters missing. For example, “á” is replaced with “a”, “ß” is replaced with “ss” etc.

* The transliteration support extends to supporting the UTF-8 character set, so Japanese, Chinese characters etc. are all handled easily!

Organise EZ-Pages into Site Sections

* By putting a bit of thought into the format of URI mappings for EZ-Pages, it is possible to organise them into logical sections.

* EZ-Pages no longer have to appear as being “root” pages of the site!

* For example, a “Company” section could be created with 4 EZ-Pages using URI mappings such as the following:


[Updated for 3.0.0] Ability to use Static URIs for any Zen Cart page

* There are two methods for using static URIs for any Zen Cart page, both of which have full support for having a “current” URI, as many historical/“old” URIs as necessary and are fully multi-lingual!:

1. [New for 3.0.0] Static URIs can be used for any Zen Cart page by directly entering the static URI for the page and the type of the page in the database table for the module.

* Using this method to specify static URIs for a Zen Cart page will cause every link to that page to use the static URI instead of the dynamic Zen Cart URI.

* For example, to create a static URI for “index.php?main_page=specials”:

uri: /latest_offers

main_page: specials

2. Static URIs can also be used for any Zen Cart page by directly entering the URIs to map from and to in the database table for the module:

* These Zen Cart pages being mapped to can have their GET variables initialised, allowing data to be loaded for the page, as if the full dynamic URL had been used. For example:

uri: /surveys/shipping

* Could map to a custom survey page, with the necessary ID for the survey to be shown:

alternate_uri: /index.php?main_page=survey&survey_id=2

* Please note: There is no admin interface for entering these URI mappings in this module, they have to be entered manually (using software such as PHPMyAdmin).

Automatic Usage of any URI mappings Defined for Categories, Products, EZ-Pages or any other Zen Cart page!

* The module modifies the main zen_href_link function slightly to make automatic use of any URI mappings defined for a category, product, EZ-Page or other Zen Cart page.

* Having each page link to each other using their static URIs makes the site easier to navigate and increases the usage of keywords on the site, further helping SEO!

[Updated for 3.0.0] Ability to use Static URIs as an Alias for any other Static URI

* The module can be used to redirect from one static URI to an alternative URI (even to an external URI).

* [New for 3.0.0] The exact type of redirection (temporary/permanent etc.) can even be controlled, by specifying the HTTP Status Code to be used for the redirection to the alternative URI.

* Creating aliases allows the store to handle visits to broken/old links.

* It also allows the store to increase the number of keywords being used to link to a page on the site through the creation of an alternative link/alias.

* Please note: There is no admin interface for entering these URI mappings in this module, they have to be entered manually (using software such as PHPMyAdmin).

[New for 3.0.0] Automated support for standard Zen Cart pages related to a Product

* The Reviews and Tell-A-Friend sections are automatically made “subsections” of the product's main info page, by appending some specific URI parts to the product info page's static URI.

* This saves effort setting up URIs for these pages specifically for each product, creating static URIs such as:



100% Compatibility with Zen Cart

* Installing the module won't break any of the functionality of Zen Cart.

* The module works using Zen Cart's Initsystem so it doesn't interfere with any of its workings. Zen Cart pages have no idea the module is even running, the run-time environment appears exactly as if the module wasn't installed.

* This should mean that the module will work perfectly with most (and most likely all) other Zen Cart modules.

Transparently Handles URIs With or Without a Slash (/) at the End

* The module sees URIs with a slash at the end as identical to those without one. For example, the following are equivalent:

Respects Context of a Link to a Category/Product page

* The module retains Zen Cart's category history when linking to a subcategory of another category or a linked product within another category, so the full path back through any parent categories is available. (Without this feature all categories being mapped to by a URI mapping would appear as if their only parent category was the root of the store and linked products would always show as belonging to their “master” category, which is not necessarily the category the customer has accessed the product from).

Support for all of Zen Cart's Standard Product Types (and more)!

* The module has full support for the standard 5 product types in Zen Cart plus the product_book type (version 4 from the Zen Cart download area).
+ Download Latest

Forum Support Thread

Submit An Updated Version
Zen Cart® Versions v1.5.0, v1.5.1, v1.5.2, v1.5.3, v1.5.4, v1.5.5
Original Author conor
Last Updated by jeking - 6 Jul 2016
Downloads 30,701

Version History

Ceon URI Mapping (SEO)   -   Version: 4.5.2
Updated to include Zen Cart 1.5.5a modified core files.

  + Download
Zen Cart® Versions v1.5.0, v1.5.1, v1.5.2, v1.5.3, v1.5.4, v1.5.5
Date Added 6 Jul 2016
Author jeking
File Size 2.80 MB
PHP 5.3 Safe? Yes
Downloads 1,165
Ceon URI Mapping (SEO)   -   Version: 4.5.1
Updated for Zen Cart 1.5.5. Dropped files for Zen Cart 1.3.8 and 1.3.9 due to file size requirements. If you are still using one of these, it's time to upgrade and you can get them in a previous version of this plugin.   + Download
Zen Cart® Versions v1.5.0, v1.5.1, v1.5.2, v1.5.3, v1.5.4, v1.5.5
Date Added 26 Mar 2016
Author jeking
File Size 2.63 MB
PHP 5.3 Safe? Yes
Downloads 512
Ceon URI Mapping (SEO)   -   Version: Ceon URI Mapping (SE
Updated to work with ZC1.5.4   + Download
Zen Cart® Versions v1.3.8, v1.5.0, v1.5.1, v1.5.3, v1.5.4
Date Added 4 Feb 2015
Author JSWeb
File Size 3.71 MB
PHP 5.3 Safe? Yes
Downloads 1,847
Ceon URI Mapping (SEO)   -   Version: 4.4.3
The only change is that the sample core files for ZC1.5.3 have been added. Please note: the documentation contains many links to the old Ceon site to which JSWeb have no access, but we don't believe it is either acceptable or appropriate for us to remove those.   + Download
Zen Cart® Versions v1.3.8, v1.3.9, v1.5.0, v1.5.1, v1.5.2, v1.5.3
Date Added 4 Sep 2014
Author Ryk
File Size 3.60 MB
PHP 5.3 Safe? Yes
Downloads 1,180
Ceon URI Mapping (SEO)   -   Version: 4.4.2
Fixed PHP5.4 issue with predefined SID constant causing PHP out-of-memory condition:   + Download
Zen Cart® Versions v1.3.8, v1.3.9, v1.5.0, v1.5.1
Date Added 17 May 2014
Author JSWeb
File Size 3.44 MB
PHP 5.3 Safe? Yes
Downloads 808
Ceon URI Mapping (SEO)   -   Version: v4.4.1
Uploading the last version on behalf of the late Conor Kerr. (I'm positive Conor would not mind)

Support thread for this module is here:

R.I.P. Conor.. Your were one in a million.

  + Download
Zen Cart® Versions v1.3.8, v1.3.9, v1.5.0, v1.5.1
Date Added 29 Jan 2013
Author conor
File Size 3.43 MB
PHP 5.3 Safe? Yes
Downloads 3,945
Ceon URI Mapping (SEO)   -   Version: 4.0.8
[ADDED] The Installation Check now analyses the server's environment variables, to try and determine the type of server being used, so that the instructions for adding the example rewrite rule are relevant to the server on which the software is being used. Servers currently supported for analysis are Apache, IIS with URL Rewrite and IIS with ISAPI_Rewrite.

[UPDATED] The setting for automatically generating and adding URIs for Tell-A-Friend pages is now set to off on new installations of Ceon URI Mapping as this functionality has been removed from Zen Cart 1.5.x. It is still fine to be used on both Zen Cart 1.3.x and Zen Cart 1.5.x but will have no useful benefit on 1.5.x, just taking up space in the database unnecessarily.

[UPDATED] Check for valid value of PHP_SELF environment variable updated to cope with stores using the ‘.php’ extension in URIs.

[BUGFIX] Example Rewrite Rule generator in Installation Check updated to cope with directories that have strange characters, such as spaces, in their names. The invalid rewrite conditions previously generated would cause a server error, taking down the site altogether.

[BUGFIX] Config Utility and Installation Check updated so their HTML output is fully valid.

[UPDATED] Installation instructions updated with information about integration with latest version of Sitemap XML (formerly “Google Sitemaps”) module.
  + Download
Zen Cart® Versions v1.5.0
Date Added 24 Feb 2012
Author conor
File Size 1.88 MB
PHP 5.3 Safe? Yes
Downloads 4,249
Ceon URI Mapping (SEO)   -   Version: 4.0.7
[BUGFIX] Serious bug meant that when a static URI could not be matched, Ceon URI Mapping was simply displaying the store's home page, instead of the File Not Found 404 page.   + Download
Zen Cart® Versions v1.5.0
Date Added 25 Oct 2011
Author conor
File Size 1.86 MB
PHP 5.3 Safe? Yes
Downloads 1,625
Ceon URI Mapping (SEO)   -   Version: 4.0.6
[BUGFIX] When the user was using a different language from the default and then accessed a page which had the same URI mapping for the current language and the default language, a typo meant that the software would mistakenly return to the store's default language.

[BUGFIX] Sample modified core file admin/includes/modules/document_general/collect_info.php for Zen Cart versions 1.3.9h and 1.5.0beta had a line left in it from previous versions which shouldn't have been there, corrupting the PHP file and resulting in a blank page.

[UPDATED] FAQ updated to make it clear how to fix any clashes/problems with other modules.
  + Download
Zen Cart® Versions v1.5.0
Date Added 8 Oct 2011
Author conor
File Size 1.86 MB
PHP 5.3 Safe? Yes
Downloads 224
Ceon URI Mapping (SEO)   -   Version: 4.0.5
[UPDATED] Support added for changing the capitalisation of product URI mappings. Previously solely changing the captialisation of a product URI mapping would result in a clash being flagged, preventing the change being saved. Changing the capitalisation is now allowed, with the process making full use of the historical URI functionality.

[UPDATED] The version Id header lines have been updated in some of the core modified files as they were out of sync with the lines in the equivalent fresh versions of Zen Cart. This has no effect whatsoever on anything other than to make the modification of files less ambiguous for those that don't have their comparison software configured to ignore version ID lines.
  + Download
Zen Cart® Versions v1.5.0
Date Added 29 Sep 2011
Author conor
File Size 1.86 MB
PHP 5.3 Safe? Yes
Downloads 257
Ceon URI Mapping (SEO)   -   Version: 4.0.4
[ADDED] Installation check extended to check if old files from a previous version of the software remain. It attempts to deletes any files/folder which should have been removed when upgrading. If the attempt at deletion is unsuccessful, it will warn the user about the presence of the old files/folder as they can conflict or even break the new/updated functionality.

[ADDED] Module will now make sure that its configuration group is added to the Zen Cart admin in 1.5.x.

[UPDATED] Styling of config utility interface improved with CSS3 graphical effects.

[UPDATED] Styling of fieldsets updated with code to fix problems with IE's rendering engine.

[BUGFIX] The code to manually build the $PHP_SELF server environment variable had a mistake in it. This could result in the software mistakenly disabling itself on particular server setups.
  + Download
Zen Cart® Versions v1.5.0
Date Added 22 Sep 2011
Author conor
File Size 1.86 MB
PHP 5.3 Safe? Yes
Downloads 104
Ceon URI Mapping (SEO)   -   Version: 4.0.3
Changes between version 4.0.2 and version 4.0.3:

[ADDED] Sample modified files and extra required new files added for Zen Cart 1.5.0beta.

[ADDED] Information about, and the link to, the configuration checking functionality of Ceon URI Mapping added to the Installation Check section.

[ADDED] Flag to override the database privileges check added to the installation/upgrade functionality.

[UPDATED] Installation check updated with compatibility for the multi-language EZ-Pages module.

[BUGFIX] Character/String Replacement functionality of auto-generation wasn't working at all as the list of replacements wasn't being loaded by the software!

[BUGFIX] The call to the EZ-Pages URI Mapping auto-generation method was renamed in 4.0.2, but the file containing the updated class with the new method name was mistakenly only included in the UMM edition of the distribution, with the file for 4.0.1 remaining in the standard edition. This broke the auto-generation functionality for EZ-Pages in 4.0.2, resulting in a blank white page and an error message in the debug cache! The correct file, with the correct version of the class and method, has been included in 4.0.3.

[ADDED] FAQ about missing configuration group option added to the documentation.

[ADDED] FAQ about missing Zen Cart admin menu item added to the documentation.

[UPDATED] Documentation updated with up-to-date information for Zen Cart 1.5.0.
  + Download
Zen Cart® Versions v1.5.0
Date Added 14 Aug 2011
Author conor
File Size 1.86 MB
PHP 5.3 Safe? Yes
Downloads 489
Ceon URI Mapping (SEO)   -   Version: 4.0.2
Changes between version 4.0.1 and version 4.0.2:

[UPDATED] When a product is having its URI mapping auto-generated, with an integer being auto-appended because the mapping clashes with an existing mapping, the auto-generation code now checks to see if the clash that is occurring is in fact simply with the product's own mapping. If so, now new URI mapping is generated.

[BUGFIX] When a URI was being made into a historical mapping and an identical historical mapping already existed, the code was wrongly deleting both the original, duplicate mapping and the new historical mapping, instead of only deleting the duplicate mapping.
  + Download
Zen Cart® Versions v1.3.9
Date Added 23 Jul 2011
Author conor
File Size 2.16 MB
PHP 5.3 Safe? Yes
Downloads 774
Ceon URI Mapping (SEO)   -   Version: 4.0.1
Minor update to fix a bug and add some small features.

[UPDATED] If auto-generation fails to generate a URI mapping (because a category/product/manufacturer/EZ-Page has no name), an informative error message is now displayed, instead of simply stating that no URI mapping was generated.

[UPDATED] The example rewrite rule generated by the software included a slash at the end of the admin exclusion. It has now been adjusted to remove this slash, so that the admin URI can be accessed without having to end it with a slash ( can be used to access the admin, instead of insisting upon or etc.).

[BUGFIX] Existing URI mappings for auto-managed product pages weren't being converted to historical URI mappings whenever a new URI mapping was entered/generated for a product.

[REMOVED] Sample modified core files, and template override files, for Zen Cart versions 1.3.0 to 1.3.7 removed from the distribution. Every store should really upgrade to Zen Cart 1.3.9h as previous versions are bug-ridden!
  + Download
Zen Cart® Versions v1.3.9
Date Added 19 Jul 2011
Author conor
File Size 1.68 MB
PHP 5.3 Safe? Yes
Downloads 212
Ceon URI Mapping (SEO)   -   Version: 4.0.0
This is a COMPLETE REWRITE of the software.

All known issues have been fixed and many useful new features added.

It is also easier to install/upgrade.

Changes from versions 3.8.0 to 4.0.0...

[ADDED] Installation check and example rewrite rule functionality added.
Once the Config Utility has been successfully installed, and the database & configuration installed or brought up to date, the user can access the installation check/example rewrite rule functionality from the config utility. This smart and useful addition to the software will analyse the store's configuration files and warn the user if there are any mistakes in the files which they need to correct, and will even provide full information about what they should do. It will also check all the core files that must be modified for Ceon URI Mapping to work optimally, and warn the user if any of the modifications are missing or out of date, again giving information on what the user should do!
A quick glance at this new admin page should help the user identify and fix any problems with the installation quickly and easily!
Finally, the check will analyse the store's filesystem and build an example rewrite rule for the store, along with instructions on how to get the rule working. Adding the rewrite rule should now just be a simple matter of copying and pasting the rule built by this new functionality!

[ADDED] Compatibility with IIS ISAPI_Rewrite 3 and IIS URL Rewrite added, in part by updating the sample rewrite rules. The example rules now use the “QSA” flag instead of appending the query string with “?%{QUERY_STRING}”. The updated rules remain compatible with all Apache versions, on any platform.

[ADDED] Checks added throughout rewritten software to prevent any URI mappings being added that clash with an existing (current) URI mapping.
A setting has been added that let's the store choose whether they'd rather be notified about any such clashes, or (for products only at this time) whether they would rather the software automatically appends a number to the end of the mapping to make it unique and therefore stop it from clashing with the existing URI mapping.

[ADDED] Checks added throughout rewritten software to prevent any duplicate historical URI mappings being created in the database.

[ADDED] Messages are now displayed in the message stack whenever a URI mapping is added, updated or converted to a historical URI. Gives assurance that the desired change(s) was/were made, especially since any auto-generated/entered/updated URI mapping is displayed within the respective success message.
Any newly added/updated mapping is clickable within this message, so the user can see it working straight away in a new browser tab/window.

[ADDED] New settings added to allow the store to specify which “pages related to a product” should have their URIs auto-managed by the software.
There are four page types which can be auto-managed: “Products Reviews”, “Product Review Info”, “Write a Review” and “Tell A Friend”.
If a store doesn't use a particular page type, disabling its auto-management will mean that the URI mapping database isn't populated unnecessarily, making it smaller and therefore slightly more efficient/quicker.
The page types which are to be auto-managed can be enabled/disabled in a new section in the config utility. The URI parts which are to be appended for the auto-managed URIs are now entered in another new section in the config utility, instead of being defined in language defines, as was the case previously, making it considerably easier to specify the desired URI parts.
Also, as noted in a bugfix entry below, previous versions of the module didn't support multiple languages properly.

[ADDED] Functionality added to the module to “normalise” the effects of using a rewrite rule. Previously, with some server configurations, the use of a rewrite rule would result in the $PHP_SELF variable value having a useless value. The new code attempts to circumvent this problem and provide a meaningful value for the variable.

[ADDED] Ceon URI Mapping functionality implemented in product move and copy functionality for four more product types: document_general, document_product, product_free_shipping and product_music. Previously the Ceon URI mapping functionality for these product types was only available when adding or updating a product.

[ADDED] Sample modified core files for Zen Cart 1.3.9g and 1.3.9h added to the distribution.

[ADDED] Sample modified files for third party module “Multilanguage EZ-Pages” module added to the distribution.

[ADDED] Support for Ceon Model Code and automatic version checking functionality added.

[UPDATED] Module restructured into using a class-based structure. A base class provides shared functionality. Subclasses can then be created which differ in how they run.
The “standard” class is designed for maximum compatibility and flexibility, while remaining as lightweight and nimble as possible.
Alternative versions can be created which are specific to certain server setups, skipping unnecessary configuration checks and/or using more efficient code to map URIs, for maximum speed.

[UPDATED] URI mappings now have any trailing slashes stripped. URIs can no longer end in a trailing slash. Auto-upgrade functionality will automatically remove trailing slashes for any URI existing mappings.

[UPDATED] Excluded Files functionality removed as the new, improved Ceon URI Mapping instantiation code can determine whether or not Ceon URI Mapping should attempt to analyse and map the current URI. This means the module should be 100% compatible with all other Zen Cart modules capable of working with static URIs, without the store having to adjust anything at all!

[UPDATED] An alternate URI can now be as little as one character in length. Previously it could only be two characters or greater in length. This allows redirecting of URIs directly to the home page (/).

[UPDATED] The canonical tag is no longer added using an auto-loaded JavaScript file. For Zen Cart 1.3.9 it is now added by using Zen Cart's built-in canonical output functionality (overriding the code to use the Ceon URI Mapping canonical URI). For earlier versions of Zen Cart a small core file modification is now needed to the template file common/html_header.php, to bring it up to date and make it compatible with the canonical URI functionality of the module.

[UPDATED] Extra core file override (init_sessions.php) included for Zen Cart 1.3.9 as it doesn't set the cookie path to the root of the site, which is what is required for sites that use static URIs. The override prevents the propogation of the session ID (zenid=xxxx) in the URI beyond the second page visited, when the visitor accepts cookies. The first page visited will still have the session ID at the end of all links as that is an unavoidable aspect of how Zen Cart must work when no cookie has been supplied (i.e. a fresh visit to the site). Override is not needed for versions of Zen Cart before 1.3.9 as those versions set the session cookie relative to the site's root.

[UPDATED] The words “a” and “an” are no longer part of the default list of words to be removed from a URI when auto-generation is taking place.

[UPDATED] zen_href_link() modifications for Ceon URI Mapping updated to use new class instead of procedural code. Number of modifications to html_output.php has been reduced from 4 to 1, making this core file's modification easier to make.

[UPDATED] Ceon URI Mapping will no longer attempt to redirect from a static URI when the static URI is a historical URI, or the language is being changed, and a form is being POSTed. Nor will it attempt to redirect if it detects a form being POSTed to a dynamic URI that has a current URI mapping, as could happen if the form didn't include the “action” parameter that was previously being checked against. Avoids problems with modules that don't use zen_href_link() properly.

[UPDATED] Core admin file modifications changed to simply instantiate classes and call methods. This is a great improvement as it means that the Ceon URI Mapping code blocks in the modified core files are much simpler, each change now being just a few commands surrounded by the marker comments. This should make the core file modifications much easier to make. Also, since the actual code has been abstracted to classes, it will be much easier to update the software as the core files themselves probably won't need to be changed, the class files can simply be overwritten instead.

[UPDATED] Ceon URI Mapping admin functality is no longer loaded for all Zen Cart admin pages. The files containing the classes are loaded only when needed, as opposed to the previous method of having the functions loaded for every Zen Cart admin page. Avoids needlessly using system resources in sections of the admin that don't use the Ceon URI Mapping functionality.

[UPDATED] Auto-upgrade functionality now checks if the current database user has the necessary ALTER TABLE privileges.

[UPDATED] Code to remove duplicate mappings updated to match against the base product URI, rather than building a unique URI to check against, for each of the 4 product-related page types, and one to check against product URIs with a trailing slash. Reduces the number of queries for this functionality from 6 to 2. Remaining two queries have also been cut down in scope, increasing their efficiency.

[UPDATED] Some admin functionality changed from using the Ceon String class to standard PHP functions as the specific functionality is only ever going to handle ASCII strings, which the PHP functions can handle more quickly/efficiently.

[BUGFIX] 303 and 307 redirects were using the wrong redirection code (both were using 302).

[BUGFIX] Plus (+) symbols weren't being escaped in the regular expressions which handle the list of words to be removed from auto-generated URIs. Using a plus symbol therefore broke these expressions, meaning that the Remove Words functionality didn't work as expected.

[BUGFIX] The list of words to be removed from auto-generated URIs wasn't being encoded properly for being output on the configuration page, breaking the encoding of certain characters.

[BUGFIX] The URIs being auto-generated for “pages related to a product” only ever used the defines for the language being used in the admin, even if the store had multiple languages. This meant that, for languages other than the one being used in the admin, the product part of the URI would be in the correct language but the URI part for the related page would be in the wrong language!

[BUGFIX] Ceon URI Mapping broke the Zen Cart functionality to automatically change the currency to the language's default currency whenever the language was changed. A new override file has been added for init_currencies so that the default language currency functionality works perfectly with static URIs.

[ADDED] New FAQs added to describe what to do whenever the use of the module causes images not to load, layout issues to occur (e.g. because of unloaded CSS files) or other Zen Cart modules (including those with AJAX functionality (e.g. JavaScript menus)) to stop working.

[ADDED] New FAQ added about how to deal with 404 errors being displayed.

[ADDED] New FAQ added about problems with particular file types being “blocked” whenever the rewrite rule is added.

[ADDED] Information added to the documentation on how to configure the Google Sitemap (XML) module to work properly with Ceon URI Mapping.

[REMOVED] Documentation and FAQ about excluded files functionality removed as the functionality is no longer necessary!

[BUGFIX] Documentation updated so that the dynamic functionality works when the documentation is being accessed from a local disk using Google Chrome.

Changes from versions 3.6.3 to 3.8.0...

[UPDATED] Commas are now also converted to spaces before being replaced by the whitespace replacement character when auto-generating a URI.

[UPDATED] A dynamic Zen Cart URI with an empty main_page parameter, “index.php?main_page=”, is now redirected to the home page with a 301 permanent redirect.

[UPDATED] Mapped URIs are now deleted when the Zen Cart product or category deletion function is called. Previously the deletion code was called directly when a product/category was being deleted, but subcategories and products within a category being removed were not having their URIs deleted, wasting space in the database unnecessarily.

[BUGFIX] String replacements weren't being used in EZ-Page and Manufacturer URI autogeneration functions.

[ADDED] Exclusion for 3D-Secure IFrame wrapper file in new Ceon Cardsave Direct payment module added.

[ADDED] Sample modified core files for Zen Cart 1.3.9e added to the distribution.

[ADDED] Sample modified core files for Zen Cart 1.3.9f added to the distribution.
  + Download
Zen Cart® Versions v1.3.9
Date Added 16 Jul 2011
Author conor
File Size 2.49 MB
PHP 5.3 Safe? Yes
Downloads 148
Ceon URI Mapping (SEO)   -   Version: 3.6.3
Changes from versions 3.2.4 to 3.6.3...

16th June 3.6.3

[UPDATED] URI mapping lookup query updated to use a LIKE operator before the REGEXP operator. Limits the number of records that have to be examined by the REGEXP, resulting in vastly superior performance when the URI mappings table is large (especially if it is too large to be cached in memory by the SQL server software). Code update by Christian Pinder.

[INTERMED] Index added to the database table, for categories/products/EZ-pages, to speed up URI mapping. Gives a noticeable improvement with very large sites with tens of thousands of products. Thanks for suggestion for index format goes to Christian Pinder. Database structure shall be changing entirely in 4.0.0 for further optimisations (As always all changes are managed by the auto-upgrade functionality of the software).

[UPDATED] When URIs are being auto-generated, any forward slashes, pipe characters, plus symbols, colons, semicolons, brackets, square brackets or angle brackets in the name of a category/product/manufacturer/EZ-page will now be converted to a space, then replaced by the whitespace replacement character. This means that names with those characters in them will no longer have the words joined together.

[ADDED] Sample modified core files for Zen Cart 1.3.9d added to the distribution.

25th May 2010 3.6.2

[BUGFIX] Modified version of breadcrumb core file was missing from the distribution.

[BUGFIX] Modified version of canonical core file was in the wrong folder in the distribution - should have been in the init_includes overrides folder instead of the main init_includes folder.

[UPDATED] Minor documentation updates (including the correction of the incorrect information regarding the canonical override file).

24th May 2010 3.6.1

[ADDED] Sample modified core files for Zen Cart 1.3.9c added to the distribution.

24th May 2010 3.6.0

[ADDED] Support for filtered product listings having their own static URI added. Previously only a single unique set of query string parameters would allow a filter product listing to have its own static URI. The software can now extract the identifying query string parameters which allow product listing pages to have their own static URI.

[ADDED] Modified template files added to distribution to enable support for static URIs in the Manufacturers sidebox, the Music Genres sidebox, the Record Company sidebox and all of the product listing filter forms. This would seem to complete the support for static URIs in a standard Zen Cart installation. There are no further files known to have code which does not support static URIs!

[UPDATED] Software will now (once again) redirect to the static URI for a manufacturer's page, if it exists, when the index page is being accessed with the query string parameters identifying a manufacturer.

[BUGFIX] The canonical URI for the root of a site was incorrectly having its trailing slash removed.

[UPDATED] Checks against the query string parameters being used to build links are now case insensitive.

[UPDATED] Order of checks against query string parameters changed so that the check for the identifying parameter for a category is now the last check made. This has been done in case any other software uses links which have the category query string parameter in them, so that these [hypothetical] links won't have their static URIs incorrectly overridden by a static URI for the associated category.

17th May 2010 3.4.3

[BUGFIX] Code introduced in 3.4.0 to remove extra ampersands from the URI was being overzealous and removing an extra ampersand whenever the primary query string parameter for a mapped URI was not at the start of the query string, but was instead preceded by other query parameters. This broke the preceding and following query string parameters as the name of the following parameter was being appended to the preceding parameter's value.

15th May 2010 3.4.2

[BUGFIX] Auto-upgrade script was attempting to add the excluded_files column to the configuration database table when upgrading from version 3.2.4, even though this column is already present in the table.

13th May 2010 3.4.1

[ADDED] Check for link to index page added to link generation function. Saves having to call the database when linking to the index page, resulting in lighter usage of server resources.

[ADDED] Automatic redirection of variants of index page URIs added (index.php, index.php?main_page=index). Instead of having a default URI mapping for the index page, all links to the index page are now handled in code, with all links automatically being redirected to the root of the store (i.e. the value of DIR_WS_CATALOG, e.g. / or /shop).

[UPDATED] All canonical URIs are now absolute URIs. In 3.4.0 they were relative to the site's root, now they are full URIs (they include the http URI scheme and the site's domain name).

[UPDATED] Any previously added mappings for the index page will be automatically made into historical URIs as they are no longer needed.

[UPDATED] New function added so that when Ceon URI Mapping is redirecting to another URI, the query string is rebuilt with any array or multi-dimensional array parameters intact. (Standard Zen Cart function doesn't support passing arrays). To minimise server impact the functions are only loaded if needed.

[UPDATED] Support added for building canonical URIs for pages which are loaded by posting a HTML form which uses the GET method. Filters on product listing pages etc. use a form to build their URIs; previously this would result in each filter creating a new URI without a canonical hint tag. Now all pages always have a canonical tag, regardless of how the URI is built, by populating the canonical URI variable even when the only things that have changed in the URI are the filtering parameters.

[BUGFIX] The default index page mapping added in 3.4.0 meant that any manufacturer product listing page which didn't have a static URI mapping specified/generated redirected to the index page when trying to add a product to the cart directly from the listing, meaning that the add to cart functionality was broken. This redirection no longer takes place, so the add to cart functionality has been restored.

[UPDATED] FAQ added to documentation to point to the information needed to get some third party modules working when Ceon URI Mapping is enabled. Information about what needs to be looked at made clearer and more comprehensive.

8th May 2010 3.4.0

[ADDED] Canonical URI support added! Any page with a static URI will now have a canonical URI tag added to the page's header. This will minimise “duplicate content” reports as it tells the search engines that multiple pages should be treated as one, without actually redirecting the visitor.

The canonical URI hint causes any parameters added to the URI to be ignored, thereby preventing duplicate content reports when Zen Cart adds its session ID (?zenid=xxx) to the URI or when paged, sorted or filtered results listings add their parameters (e.g. if a page had a ?sort=2a parameter) etc.

[ADDED] Module now tracks whether or not the user has just selected a different language. If so, then instead of simply appending “&language” to the end of the URI, the module will automatically redirect to the specific URI mapping for the page for the newly selected language.

[ADDED] If the URI uses a different language from the session, the session is switched to use the new language. This means that the page will display in the language that the URI is specifically defined for. I.e. if a site has a page in two different languages and each has a translated URI (E.g. /chairs and /chaises), the session language will correctly reflect the URI being displayed in the address bar. This greatly enhances the language handling of Zen Cart!

[ADDED] Support for mapping hard-coded links containing “index.php?main_page=” added. EZ-Page alternative URLs use this format so they are now remapped to the appropriate static URI mappings.

[ADDED] Improved support for IIS ISAPI rewrite module added. URI Mapping module tries to use the original URI the IIS ISAPI rewrite module provides.

[UPDATED] The “cPath” query string parameter is now removed from the URI if the current category is simply the product's master category, as the category path information can be regenerated when the static URI is loaded. Results in neater URIs, and less “duplication” of pages as seen by the search engines.

[UPDATED] main_page query string parameter is no longer part of the main check to see whether or not an attempt should be made to identify and map the URI as some forms using the GET method provide the main_page variable. Main check is now made against the name of the script being loaded (that it doesn't include index.php).

[BUGFIX] Generated links to manufacturers weren't using the URI mapping entered for the manufacturer because of incorrect pattern matching in the zen_href_link function as modified for this module.

[BUGFIX] Typo in code to look up current URI mappings for a product was breaking the product preview info admin page when it was accessed directly from the “Preview” icon in the Categories/Products admin section. All admin/includes/modules/*/preview_info.php files need updating!

[BUGFIX] The product_id query string parameter is no longer removed if it includes attribute information, so that the attributes can be correctly pre-selected when clicking on a product in the shopping cart.

[BUGFIX] Support for arrays (inc multidimensional arrays) in query string added using new Array Query Parameter function.

[UPDATED] Extraneous ampersand character could be left over in the URI when removing used query string parameters from the URI.

[UPDATED] Example rewrite rules updated to support up to 5 characters for file extensions, rather than 4. This fixes the problem of 404 error handling pages with .shtml file extensions being processed by the rewrite rule, which was then causing Zen Cart to run and record the URI that generated the 404 in Zen Cart's “Who's online” database. Paths to missing files on the server will no longer be processed by Zen Cart and so won't show up in the “Who's online” database.

[ADDED] Sample modified core files for Zen Cart 1.3.9a added.

[UPDATED] Improvements to the documentation to make a few things clearer and information easier to find.
  + Download
Zen Cart® Versions v1.3.9
Date Added 16 Jun 2010
Author conor
File Size 1.82 MB
PHP 5.3 Safe? Yes
Downloads 5,281
Ceon URI Mapping (SEO)   -   Version: 3.2.4
[BUGFIX] When a URI was being mapped to a page for a different language from the default/current session's language, the module wasn't changing the language for the session to the language being mapped to.

[BUGFIX] Certain Zen Cart links to the product info page(s) don't use the category cPath variable like all the other links to these pages. Module updated to set this variable if it isn't set and therefore prevent these links breaking.

Upgrading is easy as no changes have been made to core files so it is recommended that everyone upgrades. However, the changes made will affect very few people so upgrading isn't essential. The first fix applies only for sites that use multiple languages and the second for sites which display a category image on the product info page (which is to say, not many sites!).
  + Download
Zen Cart® Versions v1.3.8
Date Added 22 Sep 2009
Author conor
File Size 1.06 MB
PHP 5.3 Safe? Unknown
Downloads 4,001
Ceon URI Mapping (SEO)   -   Version: 3.2.3
This doesn't seem to have been mentioned clearly enough before so it's being mentioned here again...

Please Note: This module does not automatically add mappings for existing Categories/Products/Manufacturers/EZ-Pages - if the site has existing Categories/Products/Manufacturers/EZ-Pages, they'll continue to use the standard Zen Cart dynamic URIs, until a URI has been entered or auto-generated for them, by editing the respective Category/Product/Manufacturer/EZ-Page in the admin.

This means going in and editing every Category/Product/Manufacturer/EZ-Page for which a static URI mapping is desired.

For this reason the module is aimed towards new and small stores. Or larger stores which just want to add mappings for particular parts of their site (special offers, EZ-Pages etc.) - something which is very useful for adding easy to read and remember URIs to advertisements for the site.

Version 3.2.3 includes numerous fixes for small bugs found in the module, ALL users should upgrade.

The changes are as follows:

[ADDED] Ability to exclude specific files added to ensure 100% compatibility with third party modules that have files which load up the Zen Cart system directly so they can process payment callbacks etc. To ensure that these files aren't adversely affected by the URI Mapping module, they should be excluded from being processed by the module by entering the file names in the configuration utility.
[UPDATED] Default URI Mapping is now added to map the dynamic URI for the store's home page (index.php?main_page=index) to its base static URI (e.g. / or /shop etc.) - avoids possible duplicated content issues with search engines.
[UPDATED] Extra checks added to minimise the number of situations in which the cPath query string parameter is appended to static URIs for products. The links to a product page for a product with a static URI are no longer checked against the cPath value for the global environment but are checked against the value the link function is called with. This should result in more matches and therefore the removal of the cPath variable more frequently, giving cleaner URIs.
[BUGFIX] A 404 page was being incorrectly displayed when the store's base URI was accessed with a query string appended. The index page is now displayed as expected.
[BUGFIX] Pagination, sorting and filtering functionality wasn't working when browsing by manufacturer as the module was clearing the query string parameters used to control this functionality.
[BUGFIX] Fixed a problem wherein an endless redirection loop could occur if a static URI used the main_page query string parameter.
[ADDED] Information about new Excluded Files functionality added to the documentation.
  + Download
Zen Cart® Versions v1.3.8
Date Added 28 Jun 2009
Author conor
File Size 1.06 MB
PHP 5.3 Safe? Unknown
Downloads 1,403
Ceon URI Mapping (SEO)   -   Version: 3.2.2
[BUGFIX] Incorrect logic added in version 3.2.1 meant that some URIs for the index page were bringing up the page_not_found page, if the query string didn't have "main_page=index" in it and the store has Zen Cart installed in a subdirectory rather than the root directory of the site.   + Download
Zen Cart® Versions v1.3.8
Date Added 31 Mar 2009
Author conor
File Size 1.02 MB
PHP 5.3 Safe? Unknown
Downloads 1,212
Ceon URI Mapping (SEO)   -   Version: 3.2.1
This release contains an important bugfix. ALL USERS MUST UPGRADE!

Changes from version 3.2.0:

[BUGFIX] The module was not compatible with Zen Cart's page_not_found/404 functionality.
[UPDATED] Default Whitespace Replacement Character for auto-generated URIs changed from a single underscore to a dash. (The primary reasons for this are that dashes are easier to find on the keyboard and type in for most people and dashes are more clearly read in underlined links).
[UPDATED] Documentation updated to use a single dash as the Whitespace Replacement Character.
[UPDATED] Documentation updated to make various information a little bit clearer and/or more specific.

Changes from 3.0.2:

[ADDED] Ability to specify the current URI mapping for a manufacturer directly in the admin added.
[UPDATED] Support for mapping manufacturers to static URIs added to link generation and page identification functionality.
[UPDATED] Database format updated to use a separate field for query string parameters when setting up mappings for other Zen Cart pages.
[BUGFIX] For versions 3.0.0 to 3.0.2, the links to the home page could go to a category or product page instead of the home page as the module was using an ambiguous SQL query.
[BUGFIX] Static URIs for categories were overriding the manufacturer display functionality of Zen Cart as they have a similar dynamic URI structure. Fixed by new manufacturer handling code.
[UPDATED] Documentation completely rewritten. Installation documentation made simpler, layout of documentation made clearer, table of contents added to the configuration documentation
[ADDED] New section added to the configuration documentation to help with setting up a working rewrite rule for the server and information about the new format for setting query string parameters added.
  + Download
Zen Cart® Versions v1.3.8
Date Added 27 Mar 2009
Author conor
File Size 1.02 MB
PHP 5.3 Safe? Unknown
Downloads 190
Ceon URI Mapping (SEO)   -   Version: 3.2.0
[ADDED] Ability to specify the current URI mapping for a manufacturer directly in the admin added.
[UPDATED] Support for mapping manufacturers to static URIs added to link generation and page identification functionality.
[UPDATED] Database format updated to use a separate field for query string parameters when setting up mappings for other Zen Cart pages.
[BUGFIX] Static URIs for categories were overriding the manufacturer display functionality of Zen Cart as they have a similar dynamic URI structure. Fixed by new manufacturer handling code.
[UPDATED] Documentation completely rewritten. Installation documentation made simpler, layout of documentation made clearer, table of contents added to the configuration documentation
[ADDED] New section added to the configuration documentation to help with setting up a working rewrite rule for the server and information about the new format for setting query string parameters added.
  + Download
Zen Cart® Versions v1.3.8
Date Added 19 Mar 2009
Author conor
File Size 1.02 MB
PHP 5.3 Safe? Unknown
Downloads 136
Ceon URI Mapping (SEO)   -   Version: 3.0.2
[BUGFIX] Format specifier for seconds part of date component was the wrong case, causing an illegal time to be generated. This caused an SQL error in stricter versions of MySQL.
[BUGFIX] Documentation regarding example rewrite rules updated to include a rule exclusion for the editors directory. Without this exclusion only the standard Zen Cart text editor could be used in the admin!
[UPDATED] Code added to init script to set the value of $PHP_SELF in certain circumstances, to prevent the rewrite rules interfering with the zen_href_link function in some very particular cases.
  + Download
Zen Cart® Versions v1.3.8
Date Added 27 Feb 2009
Author conor
File Size 1,003.0 KB
PHP 5.3 Safe? Unknown
Downloads 505
Ceon URI Mapping (SEO)   -   Version: 3.0.1
Unfortunately a major bug was found in version 3.0.0. ALL USERS MUST UPGRADE:

[BUGFIX] The standard Zen Cart initsystem initialises the languages system at one of the later stages, meaning that the language ID is set too late in the initsystem process for this module to work correctly when a non-human visits the site. The languages init code is now run in the URI Mapping initsystem script to fix this (major) problem.
  + Download
Zen Cart® Versions v1.3.8
Date Added 19 Feb 2009
Author conor
File Size 1,002.4 KB
PHP 5.3 Safe? Unknown
Downloads 253
Ceon URI Mapping (SEO)   -   Version: 3.0.0
  + Download
Zen Cart® Versions v1.3.8
Date Added 18 Feb 2009
Author conor
File Size 1,002.0 KB
PHP 5.3 Safe? Unknown
Downloads 181

Zen-Cart, Internet Selling Services, Klamath Falls, OR