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
  • Compatible with GraphQL through the Redirect module

Examples

Source Path Redirect Target Description
regex:blog\/\d+\/.* /blog/archive Redirect old blog URLs to archive
regex:user\/\d+\/profile /user/profile Redirect user profile URLs
regex:page\/old\/([0-9a-z]+) /page/new-page Redirect old page URLs with alphanumeric IDs

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: regex:your-pattern
  3. Example: regex:user\/\d+\/profile
  4. Set the To field to the redirect target
  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
  • Remember to escape backslashes in the admin interface (type \/ for literal / in regex)
  • 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)

Dependencies

Similar projects

Supporting organizations: 
Development and maintenance

Project information

Releases