Redirect regex

This module extends the Redirect module to support regex pattern matching in addition to exact path matching using the redirect entities.

Features

  • Extends RedirectRepository: The RedirectRegexRepository extends the RedirectRepository class
  • Service Override: Uses a service decorator to override the redirect.repository service
  • Convention-Based: Regex redirects are identified by source paths starting with regex:
  • Backward Compatibility: All existing redirect functionality continues to work unchanged
  • Compatible with GraphQL through the Redirect module

Examples

Source Path Redirect Target Description
blog/\d+/.* /blog/archive Redirect old blog URLs to archive
user/\d+/profile /user/profile Redirect user profile URLs
page/old/([0-9a-z]+) /page/new-page Redirect old page URLs with alphanumeric IDs
legacy/(\d+) /migrated/$1 Redirect legacy URLs to an equivalent modern URL, substituting the ID
legacy/(?'id'\d+) /migrated/$id Redirect legacy URLs to an equivalent modern URL, substituting the ID through its named reference

Query:

query MyQuery {
  route(path: "/user/123/profile") {
    ... on RouteRedirect {
      __typename
      internal
      redirect
      status
      url
    }
  }
}

Response:

{
  "data": {
    "route": {
      "__typename": "RouteRedirect",
      "internal": true,
      "redirect": true,
      "status": 301,
      "url": "/node/1"
    }
  }
}

Creating Regex Redirects

To create a regex redirect:

  1. Go to /admin/config/search/redirect/add
  2. Set the From field to: your-pattern
    • Example: user/\d+/profile
  3. Set the To field to the redirect target
  4. Tick the Regular expression checkbox to enable regex redirects
  5. Save the redirect

Important Notes:

  • Do NOT include a leading slash in the regex pattern (e.g., use user/\d+/profile, not /user/\d+/profile)
  • The redirect system automatically strips leading slashes before matching
  • For redirects from existing routes, enable "Allow redirects from aliases" in redirect settings
  • Multilingual Support: Patterns are tested against both the current path and the path with language prefix (e.g., user/123/profile and en/user/123/profile)
  • Patterns are matched against the entire path, and is case-insensitive.
  • Internally, the Redirect source will have a regex: prefix.

Dependencies

  • Redirect module (>=1.12) — provides the redirect entities and admin interface

Similar projects

Supporting organizations: 
Development and maintenance

Project information

Releases