url_rewrite
No security coverage
Overview
Rewrites old URLs to new URLs in HTML output at render time. Any href attribute that matches a configured "old" path is replaced with the "new" path before the page is sent to the browser.
Use case
When changing URL structure across the site, links may still appear in many places (content body, link fields, views, templates, etc.). This module rewrites them in one place at response time so you don't have to update every occurrence.
Configuration
- Configuration path: Admin → Configuration → System → URL Rewrite (
/admin/config/system/url-rewrite) - Enable/disable: Turn rewriting on or off.
- Skip admin: When enabled, no rewriting is done on paths under
/admin. - URL mappings: The source of truth. Add From (old path) and To (new path) rows. Drupal uses these for rewriting at render time.
- Generate JSON file at path (for other site): Optional. When set, saving the form writes a JSON file at this path (relative to Drupal root) with the same mappings. Share this file with WordPress so it can use the same rewrite rules.
Generated JSON format
When you set "Generate JSON file at path" and save, the module writes a file in this format:
{
"mappings": [
{ "from": "/blog", "to": "/articles" },
{ "from": "/success-stories", "to": "/case-studies" }
]
}
WordPress can read this file and apply the same rewrite logic. Paths are matched by prefix: longest match wins (e.g. /blog before /articles).
- Query strings and fragments are preserved.
- Works for both absolute URLs (e.g.
https://example.com/old-path) and relative URLs (/old-path).
Performance
- Only runs on HTML responses.
- Mappings from a JSON file are cached (invalidated when the file is updated).
- A single pass over the response body replaces only
hrefattribute values.