SkillAgentSearch skills...

Sluggi

TYPO3 CMS URL path & slug manager — auto-sync, redirects, locking, access control, duplicate prevention & more

Install / Use

/learn @wazum/Sluggi

README

<p align="center"> <img src="Resources/Public/Icons/Extension.svg" alt="sluggi" width="80" height="80"> </p> <h1 align="center">sluggi</h1> <p align="center"><em>The URL Path Manager TYPO3 CMS deserves.</em></p> <br>

Tests PHP TYPO3 Total Downloads GitHub Stars License

URLs that stay in sync when titles change. Automatic redirects. Duplicate prevention on copy, move, and recycler restore. Locking, access control, conflict detection – everything you need to manage URL paths with confidence.

[!NOTE] TYPO3 13.4 has a core bug where TemporaryPermissionMutationService does not grant page-level access for redirect storage. Non-admin editors without the site root page in their webmounts cannot create redirects on slug changes. Sluggi includes a workaround; this does not affect TYPO3 12 or 14.

One composer require, sensible defaults – highly configurable when you need it.

<p align="center"> <a href="https://wazum.github.io/sluggi/"><strong>Try the interactive demo</strong></a><br> See every feature live in your browser – no installation required. </p>

Installation

composer require wazum/sluggi

Version 14 is a complete rewrite of sluggi – modern, fully tested, and compatible with TYPO3 12.4, 13.4.26+, and 14.

This is the version you should install regardless of your TYPO3 version. Previous major versions are no longer maintained.

What You Get

sluggi editor

Automatic sync – Rename a page, the URL updates. All child pages follow. Redirects are created automatically.

Conflict detection – Duplicate URLs are caught instantly with unique alternatives proposed.

Locking – Pin critical URLs so nobody accidentally breaks them.

Access control – Let editors change the last segment only, or restrict editing based on their page tree permissions.

Duplicate prevention – Unique slugs on copy, move, and recycler restore. No more 500 errors from slug collisions.

Redirect control – Editors choose whether to create redirects when changing a URL.

Redirect info – See how many redirects point to a page, with a direct link to manage them.

Any table – Works with pages, news, events, or any record with a TCA slug field.

Features

Modern URL Path Editor

Out of the box, sluggi replaces the default slug field with a clean, focused interface:

Default view

Auto-Sync: Change a Title, Update the URL

When sync is enabled, URL paths regenerate automatically when source fields (e.g. title, nav_title) change. A badge on the source field shows it drives the URL:

Sync badge

  • Per-record sync toggle – disable it for pages or records with manually crafted URLs
  • Child pages update recursively when a parent path changes
  • Redirects from old to new URL are created automatically via EXT:redirects
  • Works for any table with a slug field (news, events, custom records)

Lock URLs to Prevent Accidental Changes

Locked URL

  • Locked URLs cannot be edited and are skipped during auto-sync
  • Optionally lock all descendant paths when an ancestor is locked
  • Editing the full path auto-locks it to prevent sync from overwriting your work

Translated Pages

Translated page

Translated pages inherit the sync and lock settings from the default language record. The toggles are disabled and display the parent's state – translations cannot override these flags independently. This ensures consistent URL behavior across all language versions.

Non-Page Tables (News, Events, Custom Records)

Non-page table sync

Tables configured in synchronize_tables (e.g. tx_news_domain_model_news) get the same per-record sync toggle as pages. Editors can disable auto-sync for individual records where they've manually crafted a slug for SEO:

  • Sync defaults to on for new records – slugs auto-generate from source fields
  • Toggle sync off to keep a hand-crafted slug that won't change when the title is edited
  • Source field badges appear when sync is active, showing which fields drive the slug
  • Translated records inherit the sync state from their default language parent
  • Sync state is stored in a separate reference table – no changes to your extension's database schema

Granular Access Control for Editors

Last segment only – Non-admins edit just the final path segment. The parent path is read-only:

Last segment editing

Full path editing – A button lets permitted users temporarily unlock the full path:

Full path edit button

Full path editing enabled

Hierarchy permissions – Editing is restricted based on page tree permissions. Users can only modify segments for pages they're allowed to edit:

Hierarchy permissions

Out-of-Sync URL Detection

When a page's URL path doesn't match the page hierarchy (e.g. after a page move, a manual admin edit, or a database import), sluggi detects the mismatch and informs the editor with a subtle amber highlight on the prefix, a one-time notification, and an inline note below the field:

Broken prefix

Broken prefix notification

The messages are tailored to the editor's permissions:

  • Editors who can lock URLs are advised to either regenerate or lock the slug to keep a custom URL
  • Editors without lock access are pointed to the regenerate button or advised to ask an administrator
  • Admins see the full URL path with the mismatched portion highlighted

Locked and synced pages suppress the indicator entirely – locked pages have intentional custom URLs, and synced pages will self-correct on the next title change.

Redirect Info

See at a glance how many redirects target a page, with a direct link to the redirects module:

Redirect info

Only shown to editors with access to the redirects module and sys_redirect table.

Redirect Control

Let editors decide whether to create redirects when a URL changes:

Redirect modal

The choice applies recursively to all affected child pages. Self-referencing redirects are prevented automatically, and stale redirect cleanup only affects auto-created redirects – manually created redirects are never touched.

Re-apply URL Paths Recursively

Right-click any page in the page tree and select More options > Re-apply URL paths recursively to regenerate URL paths for all descendant pages based on their current source fields (e.g. title, nav_title):

Context menu

  • Useful after reverting a slug change via TYPO3's undo notification, or when child pages have stale prefixes
  • Slugs are regenerated from scratch using source fields – not by prefix replacement
  • Hidden pages are included, locked pages are skipped (descendants still update unless lock_descendants is enabled)
  • All changes share a single correlation ID – TYPO3's undo notification lets you revert everything at once
  • Admin users only

Copy URL to Clipboard

URL copied

Slug Normalization

TYPO3 core turns a title like "Products/Services" into /products/services (two segments) instead of /products-services (one segment). sluggi fixes this globally – for manual edits, auto-sync, regeneration, and page tree inline editing. Optional underscore preservation (RFC 3986) is also available.

Duplicate Prevention Where TYPO3 Core Doesn't

  • Copy: Copied pages get unique slugs in the target location
  • Move: Child slugs update to reflect the new parent path
  • Recycler restore: Restored records get deduplicated slugs instead of causing 500 errors

Excluded Page Types

Remove URL paths from page types that don't need them (Sysfolder, Recycler, Spacer). An upgrade wizard cleans up existing slugs.

Configuration

All features work out of the box with sensible defaults. Fine-tune via System > Settings > Extension Configuration > sluggi:

Basic

| Setting | Description | Default | |---------|-------------|---------| | exclude_doktypes | Comma-separated doktypes excluded from slug path generation. The default 199,254 matches TYPO3 core's built-in exclusion of Spacer and Sysfolder (see SlugHelper::resolveParentPageRecord()). Add 255 to also exclude Recycler pages. If you use b13/masi to include sysfolders in URL paths, remove 254 from this list. | 199,254 | | preserve_underscore | Keep underscores in URL paths instead of converting them to dashes. Useful when your URL convention or external systems require underscores (RFC 3986 compliant). | Off | | copy_url | Show a button to copy the full page URL to the clipboard. Saves editors from navigating to the frontend just to grab a link for emails, documents, or tickets. | On | | last_segment_only | Non-admin editors can only change the last segment of a URL path. The

Related Skills

View on GitHub
GitHub Stars40
CategoryMarketing
Updated7d ago
Forks29

Languages

PHP

Security Score

95/100

Audited on Apr 3, 2026

No findings