=== Sobi Redirects ===
Contributors: alesas
Tags: redirect, 301 redirect, redirects, seo, link
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Exact 301 and 302 redirects in one JSON file. No database, no tracking, no bloat.

== Description ==

Exact redirects. No database. No tracking. No bloat.

Sobi Redirects keeps a short list of exact paths and sends each one to a page, another path, or a full URL. You add the addresses you care about. Search Console already records the rest.

* **One JSON file** — rules live in `uploads/sobi-redirects/rules.json`. There is no database table, and the front end never queries MySQL.
* **A miss changes nothing** — if no rule matches, WordPress continues. No query, no log line, no extra header.
* **Exact and predictable** — a path matches that path. A path with parameters matches those parameters only, in any order. The target is sent as you wrote it.
* **No logs, no stats, no tracking** — no 404 log and no hit counter. Requests for `/xmlrpc.php` or `/.env` are not stored.
* **A small screen** — one list under **Tools → Sobi Redirects**. Add, edit, enable, disable, delete.
* **CSV import and export** — columns `source`, `target`, `code`, `enabled`. Import adds rows and leaves existing sources as they are.

A match is redirected before WordPress runs the main query. The code is 301 or 302. One hop per request. A chain is fine across later requests. A loop is refused when you save.

Sobi Redirects is built by the makers of <a href="https://wordpress.org/plugins/sobi-forms/?utm_source=sobi-redirects&utm_medium=plugin&utm_campaign=cross-promo&utm_content=readme">Sobi Forms</a>, a lightweight contact form plugin.

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/sobi-redirects/`, or install the zip from the Plugins screen.
2. Activate Sobi Redirects. The redirects screen opens.
3. Add a source path and a target. The screen also lives under **Tools → Sobi Redirects**.

== Frequently Asked Questions ==

= Does this log 404s? =

No. The plugin only redirects paths you add. Search Console already records missing URLs, and requests for `/xmlrpc.php` or `/.env` are not stored here.

= Does it count visits? =

No. There is no hit counter and no statistics screen.

= Does the front end query the database? =

No. Redirects are read from `uploads/sobi-redirects/rules.json`. A request that matches nothing is left unchanged.

= What does an exact match mean? =

A source without a query matches that path, whatever parameters the visitor added, and those parameters stay off the target. A source with a query matches only when the parameters are the same, in any order.

= Can I use wildcards, regex, or conditions? =

No. Rules are exact paths. There are no regular expressions, groups, roles, referrers, or geo rules.

= Can I point a redirect at a page? =

Yes. On the source, picking a page copies its path. On the target, the page stays linked: a permalink change updates the target when the page is saved, and a deleted page leaves the last URL in place with a warning.

= What does uninstall remove? =

Uninstall deletes `uploads/sobi-redirects/`, including the JSON file, and leaves nothing in MySQL. Deactivating the plugin deletes nothing.

= Can someone download the redirects file? =

The file is `uploads/sobi-redirects/rules.json`, and it holds paths and display names, not passwords. Directory listing is blocked; on Nginx a direct request can still succeed, so deny that folder in the server configuration if you want it closed.

== Changelog ==

= 1.0.0 =
* First release. Exact-match redirects, CSV import and export, and a flat-file lookup.
