Aller au contenu principal
Jahia Store
FR

Permalink Generator

community
Télécharger 2.0.1

Informations

Identifiant du module
permalink-generator
Identifiant de groupe
org.jahiacommunity.modules
Statut
community
Catégorie
Content Features
Auteur
pvollenweider@jahia.com
Site web du développeur
https://github.com/jahia-community
Nécessite Jahia
8.2.3.0
Mis à jour
2026-07-09
Source
scm:git:git@github.com:Jahia/permalink-generator.git
Étiquettes
  • url
  • seo
  • permalink

 Automatically generates and maintains permanent vanity URLs for all pages and displayable content — with no manual intervention required.

The goal of this module has always been that editors should never have to think about vanity URLs. They should just exist and stay correct as the site evolves. Version 1.0.x achieved this for the creation case only. The gap was everything that happens after a page is created: renames, moves, restructures. Every one of those operations left a stale URL behind. New Version 2 closes that gap entirely, and adds a full admin panel so site administrators can audit and control vanity URL state across the site at any time.

Every content lifecycle event is handled:

  • Title set → vanity URL created from the SEO-friendly slug
  • Page renamed → new vanity created, old one kept as a redirect
  • Page moved → vanity prefix updated across the entire subtree
  • Page deleted → vanity deactivated (no 404s on existing links)
  • Page copied → fresh vanity computed independently

  
A full admin panel (Site Settings → Permalink Generator) lets administrators:

  • Choose SMART mode (manual vanities are never overwritten) or FORCE mode
  • Exclude content subtrees from automatic generation
  • Audit pages with missing vanity URLs and generate them in bulk
  • Preview and apply force-regeneration across the site

Requires Jahia 8.2.3+. Depends on the built-in seo module.
 

Captures d'écran

Versions

Security

  • Action endpoint authentication — GeneratePermalinksAction now explicitly requires an authenticated user and the siteAdminPermalinkGenerator permission. Previously these checks were not enforced at the action level.
  • Exception details no longer leaked — internal error messages are no longer returned to the client; a generic message is returned and the detail is logged server-side.

Fixed

  • Drools re-entrancy guard — removePermalinkMixin() now skips writes when called from a system session, preventing an infinite loop when Drools processes module-initiated saves.
  • isPublishedInLive() error handling — unexpected RepositoryException (other than ItemNotFoundException) now preserves the vanity instead of incorrectly treating it as unpublished.
  • CSS — help button size — .pl-help-btn restored to 20×20 px (was 44×44 px).
  • CSS — legend pills — decorative aria-hidden pills in the legend overridden to compact size.

Changed

  • saveVanityWithMixin() split into addMixinToSavedVanity() — single save per operation closes a create/save re-entrancy window.
  • Many magic strings extracted to named constants in PermalinkGeneratorService.

Dependencies

  • org.assertj:assertj-core 3.24.2 → 3.27.7 (fixes CVE-2026-24400 XXE in test scope)
  • cypress 13.17.0 → 15.17.0 / qs 6.14.2 → 6.15.2 (dev/test only)

Full changelog: https://github.com/Jahia/permalink-generator/blob/main/CHANGELOG.md

Nécessite Jahia 8.2.3.0Mis à jour 2026-06-23

Upgrading from 1.0.x

Version 1.0.x ran entirely in the background: it generated a vanity URL when a page title was set, and nothing else. There was no admin panel and no configuration.

Version 2.0.0 is a complete rewrite. The background behaviour is preserved and significantly extended; a full admin panel is added; and the Spring service layer is replaced with OSGi Declarative Services.

Existing auto-generated vanities are unaffected. The module upgrades cleanly.


New admin panel — Site Settings → Permalink Generator

The module now has a dedicated administration panel, accessible from Site Settings → Permalink Generator. It is the single place to configure the module and operate on vanity URLs in bulk.

Mode selection (SMART or FORCE)

Choose how the module handles pages that already have a vanity URL:

SMART mode (default): Never overwrites a vanity URL that an editor set manually. On rename or move, only the path prefix is updated — the editor's slug is preserved.

FORCE mode: Always applies the computed URL. Manual vanities are replaced and kept as redirects.

Excluded paths — Enter JCR paths (one per line) to suppress automatic generation for entire content subtrees. Individual pages can also be excluded in Content Editor via the jmix:permalinkExcluded mixin.

Missing Permalink Audit — Find all pages with no vanity URL, by language. Select and generate in one click. Useful when first enabling the module on an existing site.

Force Regeneration — Preview exactly which vanity URLs would change (stale, manual, or missing) before writing anything. Each row shows current URL and what it would become. Deselect rows to keep, confirm, done. Old vanities are always kept as redirects.


Extended background behaviour (new in 2.0.0)

  • Rename — vanity updated when title changes; old URL kept as redirect.
  • Move — vanity (and all descendants) updated when page moves in tree; old URLs kept as redirects.
  • Delete — vanities deactivated so existing links redirect rather than 404.
  • Copy — copied pages start fresh; vanities computed independently from the copy's own title.
  • Manual vanity detection — vanities set directly in the SEO tab are marked as manual and never overwritten in SMART mode.
  • Vanity undelete — reactivates an existing deactivated vanity instead of creating a duplicate.

Removed

  • Spring framework dependency — service is now pure OSGi DS. The META-INF/spring/ wiring from 1.0.x is gone. Third-party bundles that imported the Spring bean must rebind to the OSGi service.

Full changelog: permalink-generator-1.0.4...permalink-generator-2.0.0

Nécessite Jahia 8.2.3.0Mis à jour 2026-06-19

Ignore creating vanity for files

Nécessite Jahia 8.0.2.0Mis à jour 2022-11-18
  • Bypass the rule on import
  • Fix for level 1 pages != home
  • Remove jnt:content from the list to handle
  • Fix for non-registered namespace prefix (should prevent the following error wemnt: is not a registered namespace prefix)
Nécessite Jahia 8.0.2.0Mis à jour 2022-01-12

Fix the rule when updating a title on a node which is out of any site

Nécessite Jahia 8.0.2.0Mis à jour 2021-06-09

Rename the rule to avoid conflict with existing one

Nécessite Jahia 8.0.2.0Mis à jour 2021-05-27
Nécessite Jahia 8.0.2.0Mis à jour 2021-04-23