PHPackages                             dd/evolutioncms-plugins-ddsendredirect - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dd/evolutioncms-plugins-ddsendredirect

ActiveModxevo-snippet[Utility &amp; Helpers](/categories/utility)

dd/evolutioncms-plugins-ddsendredirect
======================================

Redirects from required non-existent URLs to required target URLs.

2.0.0(3y ago)01PHPPHP &gt;=5.6.0

Since Sep 6Pushed 1y ago1 watchersCompare

[ Source](https://github.com/DivanDesign/EvolutionCMS.plugins.ddSendRedirect)[ Packagist](https://packagist.org/packages/dd/evolutioncms-plugins-ddsendredirect)[ RSS](/packages/dd-evolutioncms-plugins-ddsendredirect/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (1)Versions (3)Used By (0)

(MODX)EvolutionCMS.plugins.ddSendRedirect
=========================================

[](#modxevolutioncmspluginsddsendredirect)

Redirects from required non-existent URLs to required target URLs. You can redirect to any existing site page or to any external URL at all.

Each URL can be specified in one of the following format:

1. Full: `https://example.com/some/page`.
2. Without protocol: `example.com/some/page`, `//example.com/some/page`.
3. Without domain: `some/page`, `/some/page`.
4. Just an ID of the existing document: `12` (only for target URLs).

Requires
--------

[](#requires)

- PHP &gt;= 5.6
- [(MODX)EvolutionCMS](https://github.com/evolution-cms/evolution) &gt;= 1.1
- [(MODX)EvolutionCMS.libraries.ddTools](https://code.divandesign.biz/modx/ddtools) &gt;= 0.55

Installation
------------

[](#installation)

Elements → Plugins: Create a new plugin with the following data

1. Plugin name: `ddSendRedirect`.
2. Description: `2.0 Redirects from required non-existent URLs to required target URLs.`.
3. Category: `Core`.
4. Parse DocBlock: `no`.
5. Plugin code (php): Insert content of the `ddSendRedirect_plugin.php` file from the archive.
6. Properties: Insert content of the `ddSendRedirect_configuration.json` file from the archive.
7. System events:
    1. `OnPageNotFound`.

Usage
-----

[](#usage)

### 1. Create TV and document with redirection rules

[](#1-create-tv-and-document-with-redirection-rules)

Redirection rules will be stored in TV value of specified document. The plugin gets the rules from the TV.

1. Create the TV:
    - Name: `settings_redirectionRules` (you can specify another name, this is an example).
    - Input Type: `Textarea`.
2. Assign the TV to a required template.
3. Create a document with specified template. Let the document ID be `42`.

### 2. Configure (MODX)EvolutionCMS.plugins.ddSendRedirect

[](#2-configure-modxevolutioncmspluginsddsendredirect)

Go to the plugin configuration tab and save the data:

1. Document ID containing redirection rules: `42`.
2. TV name containing redirection rules: `settings_redirectionRules`.

### 3. Set up (MODX)EvolutionCMS.plugins.ManagerManager.mm\_ddMultipleFields (optional)

[](#3-set-up-modxevolutioncmspluginsmanagermanagermm_ddmultiplefields-optional)

You can use this interface for more convenience.

```
mm_ddMultipleFields([
	'fields' => 'settings_redirectionRules',
	'columns' => [
		[
			'title' => 'Source URL *',
			'type' => 'textarea',
			'width' => 250
		],
		[
			'title' => 'Target URL *',
			'type' => 'textarea',
			'width' => 250
		]
	]
]);
```

If you don't want to use mm\_ddMultipleFields, you can just fill JSON manually in the following format:

```
[
	[
		"https://example.com/some/source/url",
		"https://example.com/some/target/url"
	],
	[
		"another/source/url",
		"another/target/url"
	]
]
```

Parameters description
----------------------

[](#parameters-description)

- `$docId`

    - Desctription: Document ID containing redirection rules.
    - Valid values: `integer`
    - **Required**
- `$tvName`

    - Desctription: TV name containing redirection rules in JSON (see Usage above).
    - Valid values: `string`
    - **Required**

Links
-----

[](#links)

- [Telegram chat](https://t.me/dd_code)
- [Packagist](https://packagist.org/packages/dd/evolutioncms-plugins-ddsendredirect)
- [GitHub](https://github.com/DivanDesign/EvolutionCMS.plugins.ddSendRedirect)

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance27

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1396d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/09b81986267e62b5fde1473b40aa6f11f7bc26c1c29d5f80f2768c8788e08110?d=identicon)[dd](/maintainers/dd)

---

Top Contributors

[![Ronef](https://avatars.githubusercontent.com/u/1333424?v=4)](https://github.com/Ronef "Ronef (18 commits)")

---

Tags

modxMODX Evoevoevolution-cmsmodx evolutionevo cmsevolutioncmsdivandesigndd studiodd groupddsendredirectsend redirectredirect url

### Embed Badge

![Health badge](/badges/dd-evolutioncms-plugins-ddsendredirect/health.svg)

```
[![Health](https://phpackages.com/badges/dd-evolutioncms-plugins-ddsendredirect/health.svg)](https://phpackages.com/packages/dd-evolutioncms-plugins-ddsendredirect)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
