=== DetourKit - URL redirection toolkit ===
Contributors: migaweb
Tags: redirect, 301, sitemap, htaccess, nginx
Donate link: https://www.buymeacoffee.com/miga
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Indexed redirects with sitemap import, mass target editing, and Apache or Nginx export.

== Description ==

DetourKit redirects old URLs to new ones.

* One indexed database lookup per request. The plugin stores a hash of each source path under a unique index and never loops over the rules.
* A cached negative result. A URL without a rule costs one memory read on sites with a persistent object cache.
* Sitemap import. Enter the URL of an old sitemap.xml, and every URL becomes a draft rule. The importer ignores the home page and every URL that still opens a page on the current site.
* Mass editing. Assign a target post or page to many rules on one screen with a searchable dropdown, then save all changes with one click.
* Exact and regex rules with status codes 301, 302, 307, and 308.
* Hit counts that never block the response. Logged-in users do not count.
* Export to CSV, to an Apache .htaccess block, or to an Nginx map file.

The plugin sends no data to any external service. The only outgoing request is the sitemap URL that an administrator enters on the Import screen.

== Installation ==

1. Upload the `detourkit` folder to `wp-content/plugins`.
2. Activate the plugin. It creates the table `{prefix}detourkit_rules`.
3. Open Redirects in the admin menu.

== Frequently Asked Questions ==

= Where does the redirect run? =

On the `template_redirect` hook by default. Change it to `parse_request` in the settings when you want the lookup before the main query.

= Does it need an object cache? =

No. With a persistent object cache, a miss costs one memory read. Without one, a miss costs one indexed query.

= Can I redirect to another domain? =

Yes. Enable "Allow targets on other hosts" in the settings. The option is off by default.

= What does the Nginx export do? =

It writes a map file into `wp-content/uploads/detourkit/` and shows the snippet for your server block. Nginx applies the map only after a reload. Deny web access to that folder in your Nginx configuration.

= Does uninstalling remove the rules? =

Yes. Uninstalling drops the rules table and the settings. It does not edit `.htaccess`. Remove the `DetourKit` block by hand if you used the Apache export.

== Changelog ==

= 1.0.0 =
* First release.
