{"id":401205,"date":"2026-11-10T09:44:32","date_gmt":"2026-11-10T09:44:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sobi-redirects\/"},"modified":"2026-11-10T09:44:08","modified_gmt":"2026-11-10T09:44:08","slug":"sobi-redirects","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sobi-redirects\/","author":4841310,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Sobi Redirects","header_author":"alesas","header_description":"Exact-match 301 and 302 redirects. No database queries, tracking or bloat. Fast, simple and lightweight.","last_updated":"2026-11-10 09:44:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/sobi-redirects\/","header_author_uri":"https:\/\/profiles.wordpress.org\/alesas\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":84,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"alesas","date":"2026-11-10 09:44:08","revision":3794026}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3794026,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3794026,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3794026,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3794026,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[950,537,727,726,186],"plugin_category":[55],"plugin_contributors":[266446],"plugin_business_model":[],"class_list":["post-401205","plugin","type-plugin","status-publish","hentry","plugin_tags-301-redirect","plugin_tags-link","plugin_tags-redirect","plugin_tags-redirects","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-alesas","plugin_committers-alesas"],"banners":{"banner":"https:\/\/ps.w.org\/sobi-redirects\/assets\/banner-772x250.png?rev=3794026","banner_2x":"https:\/\/ps.w.org\/sobi-redirects\/assets\/banner-1544x500.png?rev=3794026","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sobi-redirects\/assets\/icon-128x128.png?rev=3794026","icon_2x":"https:\/\/ps.w.org\/sobi-redirects\/assets\/icon-256x256.png?rev=3794026","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Exact redirects. No database. No tracking. No bloat.<\/p>\n\n<p>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.<\/p>\n\n<ul>\n<li><strong>One JSON file<\/strong> \u2014 rules live in <code>uploads\/sobi-redirects\/rules.json<\/code>. There is no database table, and the front end never queries MySQL.<\/li>\n<li><strong>A miss changes nothing<\/strong> \u2014 if no rule matches, WordPress continues. No query, no log line, no extra header.<\/li>\n<li><strong>Exact and predictable<\/strong> \u2014 a path matches that path. A path with parameters matches those parameters only, in any order. The target is sent as you wrote it.<\/li>\n<li><strong>No logs, no stats, no tracking<\/strong> \u2014 no 404 log and no hit counter. Requests for <code>\/xmlrpc.php<\/code> or <code>\/.env<\/code> are not stored.<\/li>\n<li><strong>A small screen<\/strong> \u2014 one list under <strong>Tools \u2192 Sobi Redirects<\/strong>. Add, edit, enable, disable, delete.<\/li>\n<li><strong>CSV import and export<\/strong> \u2014 columns <code>source<\/code>, <code>target<\/code>, <code>code<\/code>, <code>enabled<\/code>. Import adds rows and leaves existing sources as they are.<\/li>\n<\/ul>\n\n<p>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.<\/p>\n\n<p>Sobi Redirects is built by the makers of <a href=\"https:\/\/wordpress.org\/plugins\/sobi-forms\/?utm_source=sobi-redirects&amp;utm_medium=plugin&amp;utm_campaign=cross-promo&amp;utm_content=readme\">Sobi Forms<\/a>, a lightweight contact form plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/sobi-redirects\/<\/code>, or install the zip from the Plugins screen.<\/li>\n<li>Activate Sobi Redirects. The redirects screen opens.<\/li>\n<li>Add a source path and a target. The screen also lives under <strong>Tools \u2192 Sobi Redirects<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20log%20404s%3F\"><h3>Does this log 404s?<\/h3><\/dt>\n<dd><p>No. The plugin only redirects paths you add. Search Console already records missing URLs, and requests for <code>\/xmlrpc.php<\/code> or <code>\/.env<\/code> are not stored here.<\/p><\/dd>\n<dt id=\"does%20it%20count%20visits%3F\"><h3>Does it count visits?<\/h3><\/dt>\n<dd><p>No. There is no hit counter and no statistics screen.<\/p><\/dd>\n<dt id=\"does%20the%20front%20end%20query%20the%20database%3F\"><h3>Does the front end query the database?<\/h3><\/dt>\n<dd><p>No. Redirects are read from <code>uploads\/sobi-redirects\/rules.json<\/code>. A request that matches nothing is left unchanged.<\/p><\/dd>\n<dt id=\"what%20does%20an%20exact%20match%20mean%3F\"><h3>What does an exact match mean?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20i%20use%20wildcards%2C%20regex%2C%20or%20conditions%3F\"><h3>Can I use wildcards, regex, or conditions?<\/h3><\/dt>\n<dd><p>No. Rules are exact paths. There are no regular expressions, groups, roles, referrers, or geo rules.<\/p><\/dd>\n<dt id=\"can%20i%20point%20a%20redirect%20at%20a%20page%3F\"><h3>Can I point a redirect at a page?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20does%20uninstall%20remove%3F\"><h3>What does uninstall remove?<\/h3><\/dt>\n<dd><p>Uninstall deletes <code>uploads\/sobi-redirects\/<\/code>, including the JSON file, and leaves nothing in MySQL. Deactivating the plugin deletes nothing.<\/p><\/dd>\n<dt id=\"can%20someone%20download%20the%20redirects%20file%3F\"><h3>Can someone download the redirects file?<\/h3><\/dt>\n<dd><p>The file is <code>uploads\/sobi-redirects\/rules.json<\/code>, 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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release. Exact-match redirects, CSV import and export, and a flat-file lookup.<\/li>\n<\/ul>","raw_excerpt":"Exact 301 and 302 redirects in one JSON file. No database, no tracking, no bloat.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/401205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=401205"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alesas"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=401205"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=401205"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=401205"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=401205"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=401205"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=401205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}