This page short URL: kkay

sh404SEF is a Joomla-3 only extension. It will be/has been discontinued on August 17, 2023.

You can switch from sh404SEF to 4SEF for SEF URLS and 4SEO for an all-in-one Joomla SEO extension, which both run on Joomla 3 and Joomla 4.

Please refer to the sh404SEF FAQ page for more details.


bugAnalytics exclude IP list is cleared when saving sh404SEF general
fixes #190
bugNot cleaning up properly requests for Facebook channel urls


bugAnalytics snippet not inserted for non-logged in users
Fixes #186


chgUpdated Swedish translation
chgUpdated Russian translation
chgUpdated French translation
chgUpdated Hungarian translation
bugAdjusted to removal by Joomla of usertype. Would cause analytics
snippet to be inserted even if if it was disabled for some user groups.
Added a better selector, now showing a direct list of user groups,
allowing simple selection.
Fixes 174
bugURLs may not be removed from disk cache when deleted one at a time
from backend Url manager
bug404 page category created with wrong parent_id, may not be
bugIncorrect version check


newAdded check and message in case user has disabled either shLib
system plugin or sh404sef system plugin
chgAdded a protection against invalid Virtuemart non-sef urls, missing
chgAdded protection against pages with invalid UTF-8 characters, that
were breaking SEO features
bugLeave URL as non-sef doesn't work (regression)
bugPosisble PHP fatal error when shLib plugin is not installed before
sh404SEF plugin (due to older installations, possibly by other
extensions using shLib)
bugIncorrect date tag in plugins manifest files, release date was not
written to manifest when building the release
bugAutomatic redirects from non-sef to sef don't work
bugVirtuemart router.php file does not create sef links for category
pages, when they are linked to a menu item. Instead it returns an
Itemid. We now create the SEF link in such cases
bugRelease date is not inserted in manifest file
bugInsert news site unique id in urls only inserts article id, not
full unique if (introduced in 3.6.0)
bugPossible display of warning when performing security log files
garbage collection if security log files folder has not been created yet


newAdded Joomla! version check before installing new version
newAdded a resource manager to handle shared programming libraries amongst several extensions
newAdded shared memory caching (memcache, APC, etc) for sef/non-sef url storage, and for database queries
newPin it button nows also handle K2 independant images in items
Tracker #155
newAdded global Joomla! ACL permissions option
newAdded Virtuemart 2+ plugin
Tracker #144
newAdded "gclid" (from Google AdWords) to list of tracking vars that are stripped before doing checks for custom page title, descriptions, etc
Added also to remote configuration file, so all users with "Enable remote configuration" set to Yes will benefit immediately, without having to upgrade
newOpen graph url tag is now cleaned from possible Google analytics tracking vars
Tracker #146
newImplemented "Vary" http headers when automatic template switching is enabled for mobile devices
Tracker #136
newMobile template is now presented to Googlebot-Mobile crawler, if mobile device detection is enabled
Tracker #131
newAdded detection of a query var for automatic mobile template switcher. Now webmaster can add "sh404SEF_override_mobile_detection=force_mobile" or "sh404SEF_override_mobile_detection=force_desktop" to a link on a page, allowing user to override mobile device detection by sh404SEF. This is maintained by a cookie for subsequent clicks on the same page, and a rel="canonical" link is added to avoid duplicate content
newAdded method for 3rd-party developers to obtain SEF urls from inside the backend of a Joomla! site: Sh404sefHelperGeneral::getSefFromNonSef( $nonSefUrl, $fullyQualified = true, $xhtml = false, $ssl = null) - Method is autoloaded, no need to include file
Tracker #60
chgRemoved useless Kunena parameters
chgInstaller now checks version compatibility with any previously installed shared resource (such as shlib)
chgUpdated Russian, Swedish, Italian, Romanian, French, Spanish, Dutch, German and Spanish language files
chgUpdated Open Graph data implementation according to latest Facebook specs
Tracker #154
chgExport urls wizard now uses "slow server" settings, to make sure any number of urls can be exported w/o exceeding server resources
Tracker #119
chgCleaned new urls storage process (getSefLocation()), use only db helper, exceptions and removed redundant code (should also improve perf in some edge cases)
chgMoved analytics display temp files to /media dir
chgSimplified 404 error page edit page, now using consistently the same article category ('sh404sef custom content')
Tracker #151
chgRemoved uneeded css
chgMoved all log files to Joomla! standard log directory
Tracker #50
chgNow using shLib shared programming library
chgMoved database error handling entirely to either exceptions, or dual exception/errornum handling
chgsef_404::getCategories() now deprecated, write call to log file. Use Sh404sefModelSlugs model instead
chgDropped remaining uses of Joomla! DS constant
chgUpdated plugin to handle Kunena 2.x
Tracker #145
chgRemoved uneeded Docman configuration options
Tracker #152
chgParsing incoming requests with Joomla! router (when user asked so) is now done last, as Joomla! router jumps to 404 page if it does not recognize a request, preventing us from doing shUrl and custom redirects checks
chgNow disabling Joomla! caching when displaying 404 page, to be able insert our custom text (current url, and similar urls suggestions)
Also: language detection may not work when full page caching is on.
chgAdded default value to default language function, in case default language has not been saved in configuration
chgComply with PHP Strict standards
chgAdded a workaround for Joomla! loading its platform language strings before the SEF url has been decoded. As pagination strings are stored inside platform language files, this may result under some circumstances in pagination strings (Start, end, ...) not being translated
Tracker #143
bugSome regular expressions were not UTF-8 compatible - Thks G.Papadakis
bugSef and non-sef urls are not displayed when editing a shurl or meta data
bugOffline display template lacks css when site is in a sub-directory of server
bugOn multilingual sites, nowonly try to redirect user to her language on homepage, as otherwise we wouldn't know what the correct destination would be
bugPagination may not work on some components (those leaving page number out of the SEF url, or not using standard Joomla! JPagination object) when user has not set SEF urls on in global configuration
Tracker #142
bugPossible infinite redirect loop when some custom query vars are added to a homepage request
bugWrong page number in page title when a blog view is used as front page
Tracker #141
bugPrevent notice error when displaying social buttons on a totally empty article (!)


chgUpdated Bulgarian, French, Hungarian, Russian and Swedish translations
bugHomepage custom meta data is not displayed anymore
Tracker #132
bugFeatured articles view does not get proper url on second or more languages, on multilingual sites (reported by Simon Gendrin)
Tracker #134


newReworked rel="prev" and rel="next" head tags, comply now with Google guidelines and improves paginated content handling by search engines
newAdded Pinterest support to social buttons AND Analytics reports. Pinning actions are tracked inside Google Analytics and your site control panel like other social buttons
Tracker #102
newGoogle Anlytics backend integration now using version 2.4 of API - as version 2.3 will be shut down in july 2012
chgUpdated Bulgarian, German, Spanish, French, Hungarian, Italian, Dutch, Romanian, Russian and Swedish translations
chgRemoved uneeded language parameter
Tracker #125
chgAdded check to prevent some notice error display when there is no default language version of an article or category, on multilingual sites
chgAdded check to prevent some notice error display when there is no default language version of an article or category, on multilingual sites
chgAdded check to prevent notice error display if user completely delete the "Page" text from configuration
Tracker #113
chgAdded workaround for bug in Joomla! front end com_media image browser, probably using relative urls
Tracker #120
chgAdjust 404 errors logging in case server is running IPV6
chgSome changes for Falang compatibility
chgCSS tweaking to the wizards display
chgUpdated Russian translation (Alex Smirnov)
bugSEF url is saved to database when doing a 301 automatic redirect from non-sef to sef, when set to use Joomla! router, which should not save sef url to db
Tracker #114
bugUnder some circumstances, cache file lock file may not be deleted and cache not used anymore
Tracker #115
bugIncorrect paginated urls on home page of some multilingual sites
bugSocial buttons link is not correct when using "no .htaccess" rewrite mode
Tracker #121
bugQRCode creator does not add /index.php/ prefix when not using a .htaccess file
Tracker #116
bugUnder some circumstances, social buttons can be displayed on category pages, even of set to display only on canonical page
Tracker #108
bugIncorrect call to framework getMenu() method. No visible effect though
bugCollect memory & time would not work, need update to J! 2.5 format
Tracker #107


newAdded 301 auto-redirect to protect against pages of your site which have been Facebook-liked using old method, that can generate fb_xd_fragment and fb_xd_bust duplicate content issue
Tracker #95
newImplemented channelUrl for Facebook like/send button, to protect against fb_xd_fragment and fb_xd_bust SEO issues
Tracker #95
newYou can now select exactly which social button to display on a a tag by tag basis, using 'type' attribute in tags
newAdded canonical tag handling for J! 2.5 new com_finder "Smart search"
newWorkaround for issue in J! 2.5: cannot use categories model from outside of com_content
chgUpdated Spanish translation by Hertak
chgSimple title and better robots meta on 404 page
chgDon't show Open graph data on 404 pages
chgRemoved Virtuemart 1.x plugin
chgBetter detection of item category, when displaying social buttons, will work also when article is displayed inside a module
Tracker #103
chgReplaced deprecated function in Mosets Tree plugin
Tracker #97
chgUpdated Russian translation (Alex Smirnov)
chgUpdated Romanian translation (Valentin Barbu)
chgUpdated Italian translation (Andrea Castrovilli)
chgUpdated German translation (Jürgen Hörmann)
chgUpdated Bulgarian translation (Kiril Yoviev)
chgCleaned up all language files, key deduplication, ready to upload to translation server
chgMoved some of the social buttons javascript links to end of body instead of end of document head
Tracker #385
chgAdded a check to handle name conflict between Mighty Touch and JomSocial, avoiding fatal errors
Tracker #393
chgChanged default layout for Twitter and G+, to use shURls and hide clicks count
Tracker #81
chgCan now modify URLs in a case-sensitive manner
Tracker #379
chgUpdated Dutch translation by Gerard van Enschut
Tracker #88
chgUpdate to Swedish translation, by JokrSolutions
chgAdded a check in case user enters a space as an alias to an URL
Tracker #87
bugPrevent creating useless links to 404 page, when site is crawled
bugOutbound links images are not inserted into page if site is in root dir
Tracker #96
bugfile cache TTL is multiplied by 86400 seconds (a day) instead of 3600 (an hour)
Tracker #98
bugA shurl is created for homepage on multilingual sites
Tracker #105
bugInfinite redirect loop when site is accessed by crawlers on multilingual sites when autoredirect from non-sef to sef is on
Tracker #104
bugMay generate loop redirects when adding aliases identical to original url, except for the letter case
bugCustom canonical URL is not saved if it is the only custom meta data for an url
Tracker #94
bugKunena plugin: new post from category doesn't have a distinct URL
Tracker #93
bugRewriting prefix is lost when redirecting incoming url to the same with correct case
Tracker #91
bugOpen graph fb:admins tag should use "property" field, not "name"
bugWhen "Use default" is selected as Object type option for specific urls, the Opengraph data object type is not inserted
Tracker #395
bugBatch-modifying page title or description would erase other meta data previously set, if any
Tracker #86
bugAdded test to avoid duplicating records when Apply and Save button are pressed in sequence when adding custom meta data to a URL
Tracker #85


newAdded option to use shURL instead of full SEF url in social buttons. Especially useful for Tweeting, to better use those 140 characters
Tracker #67
newCan now restrict display of social buttons to only some content categories
Tracker #76
chgRemoved display of unused hit counter
Tracker #80
chgUpdated French translation
chgRemoved autoredirect from Joomla SEF to SEF
Tracker #78
chgWhen saving data from Title and metas manager, if one url is incorrect, we now attempt to save remaining data, in case some of it is correct and can be saved
chgWe now delete a meta data record if user happens to clear all meta data fields, save space and avoid having a meta data icon show in url manager when meta data have been cleared
Tracker #75
chgSocial buttons should not be displayed when printing Joomla! articles
Tracker #74
chgAdded some styles to social buttons background
chgAdded a check to prevent recording empty urls in 404 list
Tracker #390
bugDisplay mysql error when using slow server mode and sorting urls by duplicates, meta or alias
Tracker #389
bugPopup window too small when editing some urls, poor display
bugIf Joomla! full page cache is activated, social buttons may sometimes not be inserted, or may not work
bugDisable social buttons insertion if global "Activate SEO management" is disabled by user
bugIn case of incoming requests for a non-sef url, variables from the home page link could be added to this non-sef


newUpdated Romanian translation
chgUpdated Swedish translation by BR Kristian
chgAdded workaround for JDispatcher::...handler not recognized when running an opcache system
bugNotices can be displayed if site runs with sh404sef disabled and meta data management is activated
bugCould display a notice error trying to redirect a 404 url, when there is no suggested sef url found


chgAdded protections so that social features are not triggered on 404 pages


bugDatabase error when upgrading from a previous version (site would work fine). Immediately installing a second time fixes the error.


newAnalytics reports now includes social engagement information: Facebook likes, Tweet, 1+ actions
newSocial buttons can be inserted automatically in Joomla! articles, below title or at end of article
newAdded creation of social networking buttons, handling for Facebook Like and Send, Tweeter, Google +1 and the new Google Page badge. Will place social buttons anywhere in content, other extensions, modules or even templates
newAdded automatic creation and management of Open Graph meta data, to allow better indexing by Facebook, Google+ and other social networks
newAdded more protection against fatal error if user accidentally disable sh404SEF system plugin
Tracker #375
newAdded tracking of 404 pages on Google Analytics - you'll get 404s count on sh404SEF Analytics report, as well as on Google Analytics panel
newAdded "All categories" options to insert article id setting
Tracker #53
new404 error page mechanism now compatible with Joomla! multilingual feature. Can have 404 error page per language
chgRe-enabled automatic language redirect upon visitor first visit, as workaround to counter bug in Firefox and IE9 was found for this to work properly
Tracker #59
chgGroup meta tag insertion when possible, better performance on very large pages
chgAdded support for multilingual menu item associations, and a new option to Enable/disable multilingual support in sh404SEF. Use instead of Enabling/Disabling Joomla! Language filter plugin
Tracker #57
chgSimplified similar urls plugin database query, to reduce overhead
Tracker #55
chgMoved sh404SEF 404 error page content from the "Uncategorised" category to our own, as localized versions of Joomla! would call the "Uncategorise" category differently, making it impossible to save or retrieve our error page. The change is done by install script, and existing error pages will be moved over to new category automatically
chgStart and end pagination links now also use html5 rel and next tags as needed
Tracker #372
chgUpdated css on site main control panel sh404SEFmodule
chgClarified one Swedish language tooltip
chgMoved some options (itemid management) to core instead of plugin, so that they can be activated even if extension-specific plugin does not implement them
bugWhitelisting user agent doesn't prevent anti-flooding to operate
bugNotice errors could be displayed if no similar urls found when trying to redirect a 404
bugOn multipage articles, when not displaying the table of content, first page has 2 different urls created
Tracker #56
bugunder some circumstances, custom page title and meta data may not be inserted in the page
Tracker #47
buggetCategories function called statically, but not declared so, could cause some notices errors on some servers
bugWhen auto-redirecting non-sef to SEF url, some get variables may not be passed along on some occasions
bugItemid is lost on "Edit article" icons for Joomla content
Tracker #49
bugKunena plugin: wrong url for editing profile when "Short url to profile" option is enabled
Tracker #369
bugOn 404 error pages, if user removes the "similar urls" text from the template, the marker for the faulty requested urls is not replaced either
Tracker #370
bugRegression: custom meta_ext plugin not used anymore


newNow providing a QRCode for each SEF url, in URL manager
Tracker #319
newIntegrated Swedish translation, by BR Kristian
Tracker #39
newImproved SEO for paginated content: now use HTML5 prev and next tags on all paginated links
Tracker #36
newAdded option to completely exclude category name from page title (on Joomla! content)
Tracker #38
chgAdded max url lenght on custom urls input fields
chgReplaced a hardcoded text on control panel with language file string
chgRemoved ability to not translate urls (on multilingual sites), as this would cause errors, and we'll have to wait for Joomfish to build a general solution
Tracker #42
chgUpdated com_banners plugin
Tracker #43
bugSometimes a warning could be displayed when redirecting an alias with an added query string
bugAliases that are non-sef urls are not taken into account
bugAlways append Itemid to SEF url would not work, moved language string to another file to fix
Tracker #44
bugExact error message not displayed when saving data in Title and metas manager, displays generic message instead 'Something went wrong on the server'
Tracker #41


newJoomla 1.7 compat: load mootols in backend
chgCompat with 1.7: adjusted to modified JDatabase class replacePrefix() method, would prevent shUrls to be created
chgAdded protection against sites with no default menu items, or default menu items set to not be publicly visible. Would cause a fatal error
Tracker #33
chgReduced url max length, very long urls could cause 404
Tracker #32
chgAdded compatibility layer for shRouter::shGetPageInfo()
bugInstallation of 404 page article was commented out!
bugAliases with a trailing / are not taken into a account
bugPreview links in backend does not use /index.php/ if in 'no htaccess' mode
bugError doc configuration page would only list sh404SEF default error doc, would miss other Uncategorised articles in select list
Tracker #35
bugMissing shIncludeMetaPlugin() function in page content rewriting feature
Tracker #31
bugWhen auto-redirect from non-sef to sef is activated, it is not possible to edit articles or weblinks on the front end
Tracker #30
bugStill using old #__redirection table when checking new shurl creation, could prevent creation of shurl in some cases


newProperly handling multilanguage, the SEO way. Warning: Joomla! LanguageFilter system plugin must be DISABLED!!
Tracker #26
newUpdated 3rd-party SEF url plugins installer to J! 1.6 format
newHandling of Joomla! multi-lingual features, still need some tweaking for home page links
Tracker #26
newAutomatic handling of canonical urls for print version of joomla articles
newAdded backward compatiblity class 'shRouter' for using J! 1.5 plugins in J! 1.6
Tracker #24
chgKunena plugin largely updated with help from Matias Griese, increased performance and compatibility with all Kunena versions
Tracker #355
chgSome SEF links may no be rewritten when Joomla SEF setting is off, as the SEF plugin checks directly Joomla config instead of asking router for current SEF mode
Tracker #27
chgUpdated 'Home page URL' parameter tooltip
chgUpdated links to new support site url
bugBad query on uninstalling sh404SEF while removing database tables
bugMay generate fatal error on page 2 or more of Blog view, when no specific number of items per page has been set at menu item level (ie using only global params)
bugUsing old $database global in com_newsfeeds and mosets tree plugin, would cause fatal error
Tracker #28
bugSometimes urls consisting only of an Itemid were not properly handled
bugJomsocial frontpage and profile page have same url when user not logged in
bugSEF url not created when a category is included in url
bugMissing category for the * language when using more than one language can result in empty sef url
bugOn url list, first attempt to reach page 2 or more after logging in stays on page one
Tracker #359
bugFatal error creating sef urls for Community Builder
Tracker #23


chgChanged SEF url to user edit profile
Tracker #22
bug"view" parameter not revoved from SEF urls for Search component
Tracker #21
bugId not removed from sef url when showing "All categories"
Tracker #19
bugFatal error in com_contact plugin
Tracker #18


newFor Uncategorized items, user can now select to either use only item title in url (recommended) or insert menu item title
Tracker #12
newRegistration link was not SEF
bugSometimes Meta description is not inserted by sh404sef
Tracker #17
bugInsert id in article url does not work when "All categories" is selected
Tracker #14
bugCreate an account link cause fatal error
Tracker #13


newReworked short urls system, now called shURL, faster and shorter. Can be created without having to purge existing SEF urls.
Prevent collisions with existing SEF or aliases, bad words filtering
newAdded shortlinks tag configuration page
newComponent, module and plugins install/uninstall, complying with preverve configuration settings
chgSeparated forced update flag between version check and remote config check
chgConverted old languages files to Joomla! language file format (ini)
chgVersion checker can now handle multiple version file servers
bugError in database class, would cause purging urls to fail
bugCan't use pagination links or other actions on meta manager after using the save button
Tracker #336
bugIssue with arrays in urls, when using only non-sef urls