This module enhances the Redirect module by allowing you to create redirects using regular expressions instead of just exact path matching. This enables more flexible redirection rules, such as pointing old blog post URLs to an archive page or redirecting user profile URLs. Regex redirects are identified by source paths starting with "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: TheRedirectRegexRepositoryextends theRedirectRepositoryclass - Service Override: Uses a service decorator to override the
redirect.repositoryservice - 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 Descriptionblog/\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:
- Go to
/admin/config/search/redirect/add - Set the From field to:
your-pattern- Example:
user/\d+/profile
- Example:
- Set the To field to the redirect target
- Tick the Regular expression checkbox to enable regex redirects
- 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/profileanden/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
- Regex Redirect - Uses regexes with named captures