404 Solution · Version history
404 Solution changelog and version history
- Latest version
- 4.3.6
- Oct 2, 2026 (1 month ago)
- Releases
- 109
- since 2022
- In the last year
- 62
- about one every 5 days
- Tested up to
- WordPress 7.1.4
- PHP 7.4 or later
Releases each year
- 202227 releases
- 202319 releases
- 202518 releases
- 202645 releases
202645 releases
404 Solution 4.3.6Latest
- Bug Fixes
- Fixed fatal “Maximum execution time exceeded” errors on sites with many pages, where suggestion matching kept working after the host’s PHP time limit was nearly used up. Matching now runs against a time budget for the request and, when it runs out, serves the plain 404 the visitor was already getti…
- Fixed automatic redirects to a WooCommerce product category, or to a term of another category-like taxonomy, never being saved. The matching engine found these terms, but the check that an automatic redirect’s destination exists looked for them only among post categories, so it rejected them and ev…
- Fixed a fatal out-of-memory error when the debug log folder could not be created (an unwritable uploads folder, or a file sitting where the folder should be). Writing the warning about the missing folder tried to create the folder again, and so on without end.
- Fixed the Add Redirect form and CSV import reporting success when nothing was saved. A redirect that failed to save now says so, with the cause, and CSV rows that failed are counted as invalid instead of imported. A failed save of a regex redirect is reported as a save failure rather than as an inv…
- Fixed pages that show suggestions running the suggestion search for every 404, including scanner and bot visits that never read the result. The search now runs only when a real visitor’s page asks for it, which cuts the extra WordPress requests and CPU a scanner probing many paths used to cause.
- Fixed the suggestions link on a custom 404 page showing a permanent loading state for visitors without JavaScript. It now offers a working link. The abj404_suggest opt-in is also no longer carried onto suggestion links or redirect destinations.
- Fixed the “hits” totals on the Page Redirects screen never finishing on sites where WP-Cron does not run (a blocked wp-cron.php or DISABLE_WP_CRON). The totals now complete without cron.
- Fixed an internal lock that the database refused to release (for example after a deadlock) staying behind for days and then being logged as a “Forcibly removed synchronization” error. The release is now retried, and a lock that is reclaimed is reported once and as a recovery rather than as an error.
- Fixed a harmless failure to store a temporary suggestions value being logged as a storage error.
- Fixed the time-limit report bars using fixed grey colors that ignored the admin color scheme.
- Fixed three hits-rollup notices that were not translatable.
- Fixed the Statistics trend chart showing an empty chart, as if there were no data, when its database query failed. It now reports the failure.
- Fixed users listed in the “Plugin Admin Users” setting being refused access to the plugin’s admin pages (“Sorry, you are not allowed to access this page”) unless they were already site administrators. The permission that lets them in was only switched on along a startup path normal page loads no lo…
- Improvements
- When a published post is trashed or deleted with “Create redirect when a page is trashed or deleted” enabled, its old URL now redirects to the closest parent that still exists instead of to the homepage: the post’s primary category (as set in Yoast SEO or Rank Math, otherwise the category WordPress…
- Faster admin page loads: settings are read without building the plugin’s full service graph, and one unused lookup was removed from the admin theme stylesheet hook.
- Better support reports when something goes wrong. Reports now include where a request’s time went (a per-request phase timeline, including when PHP’s time limit fires inside 404 Solution), CPU time and the running hook stack for fatal errors, and a short, redacted excerpt of a response that was not…
404 Solution 4.3.5
- Bug Fixes
- Fixed hosts with disabled PHP functions receiving repeated error-log entries during admin requests and a fatal error when opening Statistics. The plugin now checks whether each required PHP function is callable before using it and safely degrades when the host removes it.
- Improvements
- Runtime diagnostics now report the plugin functions that are actually unavailable, including functions missing with an extension or host policy, instead of relying only on the disable_functions setting.
404 Solution 4.3.4
- Bug Fixes
- Fixed concurrent diagnostic writers being able to discard the newest retained journal generation. A writer whose file had already been rotated could retain its old near-limit size and mistakenly rotate a much smaller live file; destructive rotation now revalidates that the writer still owns the liv…
- Fixed sites with more than 51 active regex redirects evaluating only the 51 oldest rules. The cache safety check used a 51-row query to decide whether the result was small enough to cache, but when it found more rules it kept using that same limited query instead of continuing through the table. Ne…
- Fixed a fatal error on the plugin’s own Page Redirects and Captured 404s screens for sites running WordPress 5.0, 5.1 or 5.2. The plugin supports WordPress 5.0 and above, but eight places that render a date called a WordPress function that only arrived in 5.3, so those screens died with “Call to un…
- Fixed a redirect loop in which a request was answered with a redirect back to that same request. When a 404’s destination was the home page and the request carried a query string such as ?page=1, the destination was rebuilt into the original URL, so a browser or crawler looped until it gave up. Eve…
- Fixed a fatal error during a plugin update, when a request that started under the old version was still running as WordPress replaced the plugin files. The plugin now notices its own files changed mid-request and re-reads its class list, instead of looking up the new files through the previous vers…
- Fixed the Confidence column on the Captured 404s tab reading as a dash for every row on every install. The match score was worked out when the 404 was captured and then thrown away, so the column, its tooltip and the two indexes that exist to sort by it had no value to work with. Captured 404s now…
- Fixed apostrophes and quotes being stored with a backslash in front of them, so text typed as “didn’t” was saved as “didn\’t”. This affected support and uninstall feedback and other text saved from the admin screens. The redirect destination and 404 log search boxes had the same problem, so searchi…
- Fixed the plugin emailing “Failed to schedule cron hook” reports for scheduling requests that had not failed. WordPress refuses a request when an equivalent scheduled task already exists, and reports that the task list “could not be saved” when the list is written with no change; both are normal ou…
- Fixed the reverse scheduled-task check: a failed recurring schedule could be reported as successful when a different occurrence of the same task already existed. Exact schedule and removal checks now require the requested timestamp, and malformed WordPress cron responses are logged with their origi…
- Fixed two simultaneous requests being able to schedule separate links in the permalink-cache background chain. The existing hook-wide check stopped a later request from restarting an already-visible chain, but the check and cron write were separate, so racing requests could both observe an empty st…
- Fixed canonical pagination handling terminating the request and recording a successful hit after WordPress rejected the redirect. A rejected redirect now keeps normal 404 handling active and records the destination, status and source in the debug log. Its captured evidence row is now inserted only…
- Fixed schema checks, database upgrades and internal database lock rows being able to wait effectively forever behind another connection’s schema change. Metadata-lock waits for those operations are now bounded, the site’s previous database-session setting is restored afterward, and the original dat…
- Fixed database index repair retrying an ALTER TABLE after failures that removing the optional online-DDL clauses could not cure, such as permission or storage errors. The bare fallback now runs only when the database specifically rejects ALGORITHM=INPLACE or LOCK=NONE.
- Fixed the plugin retrying forever when WordPress refused to remove one of its scheduled tasks. Nothing in the retry could make progress, so a deactivation or cleanup request kept asking until the server’s time limit killed it. Security and scheduled-task manager plugins can refuse the removal, whic…
- Fixed a code path that could wait for one of the plugin’s internal locks with no time limit at all. On a read-only database replica, a full disk, or an unwritable uploads directory the wait could never succeed, so the request slept and retried until the server’s time limit killed it.
- Fixed the same internal lock being granted to two requests at once on sites with no persistent object cache. Ownership was decided by writing a value and reading it back, but WordPress answered the read from its own in-memory copy, so each competing request read back its own write and concluded it…
- Fixed two simultaneous requests entering the same database upgrade and the losing one reporting the winner’s success as a string of errors, including a second change that could not succeed because the change it asked for had already been made.
- Fixed “COLLATION ‘latin1_swedish_ci’ is not valid for CHARACTER SET ‘utf8mb4′” database errors repeating every few seconds on sites whose database settings still name a latin1 collation. The permalink cache never refreshed on those sites and the published-content lookup returned nothing.
- Fixed “Illegal mix of collations” errors when the plugin compared its own log rows against WordPress’s posts table on sites where the two tables were created with different collations. The comparison returned no rows rather than failing visibly, so the check that depends on it silently found nothin…
- Fixed the plugin repeatedly trying to add a column named “using” of type “btree” to its redirects table, and logging the resulting database error, on sites where an index definition ended in USING BTREE. The error was logged three times per upgrade and three more times per scheduled run, indefinite…
- Fixed the plugin rewriting a database table that was already correct. A table’s character set was read from the first column that named one rather than from the table’s own settings, so a correctly configured table could be read as out of date and converted when nothing had drifted.
- Fixed one of the plugin’s index repairs naming a column without first checking that the column exists. That repair removes and re-adds an index in a single statement, so a database server that applied only half of it could leave the log table with neither index.
- Improvements
- The Simple Mode setting for automatic redirects now says what the match score has to reach and where to change it, instead of only saying that a good match is required. It names the score actually in force on the site rather than the shipped default.
- The page that offers suggestions for a 404 now explains, to administrators only, what the number beside each suggestion means, what the current bar for an automatic redirect is, and the two ways to act on it: redirect that URL, or change the bar.
- Internationalization
- Completed the translations for every language the plugin ships. 80 entries in Swedish and 846 across the other catalogs were still being shown in English; each is now translated, or marked to record that the English word is the right one in that language.
- The support request dialog, the confidence chart on the stats screen and the plugin migration tool now have translations. Their text previously rendered in English in every language, no matter how complete that language’s translation was.
- Restored accented characters in seven Latin-script translations where entries had been typed without them.
404 Solution 4.3.3
- New Features
- Regex redirect destinations can now be site-relative paths such as /archive/$1, not only full http(s):// URLs.
- Bug Fixes
- Fixed the Page Redirects and Captured 404s tabs being able to hang after their data was already built. When something else on the site holds an output buffer open that cannot be closed, whether that is PHP output compression or another plugin, the response could keep trying to flush buffers until t…
- Fixed a fatal error that could happen while updating from 4.2.x, when the server’s PHP bytecode cache was still handing out the previous version’s files as the new ones loaded. This guard protects future updates; it cannot protect the update that installs it.
- Fixed a crashed or killed request being able to leave an internal lock behind, which left redirect lookups on a slower fallback path until the lock expired (more than 24 hours was observed on one site). Locks are now released even when the request dies, and an abandoned lock is reclaimed after at m…
- Fixed “Illegal mix of collations” database errors on sites whose plugin tables do not all share the same collation. This affected 404 log cleanup, the admin list counts, the email digest, and the dead-destination check.
- Fixed the plugin running a schema-wide collation repair in the middle of an admin page load, which could make that page slow or time out. The repair now happens outside the page request.
- Fixed slow sorting on the Captured 404s tab. The timestamp sort had no supporting database index, so a large site re-sorted the whole table on every page load.
- Fixed the plugin trusting one of its own sort indexes by name alone. A database server silently narrows an index when a column it referenced is dropped, and an index narrowed that way was treated as correct forever, so the sorts it was built for scanned the entire table instead of reading a single…
- Fixed the plugin rebuilding a database index on the strength of index information it could not read. When a database server left out or garbled the field that says whether an index is unique, the plugin decided the index differed from the one it ships and repaired it, which on the page-suggestion c…
- Fixed the Page Redirects and Captured 404s tabs waiting on their own row counts on large sites. Pagination and the per-status counts now load in separate stages, and a count that is still being computed is shown as incomplete instead of holding up the table.
- Fixed a regex redirect whose source pattern starts with an anchor (for example ^/products/(.*)) being rewritten on save into a pattern that could never match.
- Fixed the Add Redirect dialog rejecting valid regex destinations, and checking them against a stale copy of the validation rules after an update.
- Fixed the “Hits” counts on the admin tabs falling behind. The roll-up that keeps them current was no longer running from a page view, and the counts could also sit empty on sites whose WordPress cron is backed up. Both paths are restored.
- Fixed 404 URLs containing @ (retina images such as logo@2x.png) and PHP static-call frames in stack traces being mangled by the redaction that runs before a debug log or automatic report is written.
- Fixed page suggestions staying poor for months after an interrupted rebuild. A partially built suggestion cache recovered at about 50 entries a day rather than rebuilding; it is now completed at full rebuild speed.
- Fixed a multisite network where deleting a site part way through the page-suggestion rebuild could leave a later site with an empty suggestion cache that was marked fully built and never rebuilt. The rebuild now tracks the last site it finished instead of counting positions in a list that shifts wh…
- Fixed transient database failover and connection-state errors, including Galera nodes that are temporarily unavailable and “Commands out of sync,” being treated as permanent failures. Affected queries now recover and retry through the shared database path.
- Fixed an admin table database failure being mistaken for a successful empty result, which could make the table appear empty instead of showing the real error.
- Fixed the 404 and redirect trend charts reading all zeros on sites whose database server is not set to UTC, which is common on shared hosting. Each database row was matched to a calendar day by comparing two dates produced in different time zones, so on those sites no row ever matched a day and the…
- Fixed the “Post types” and “Categories” settings fields being able to alter the database queries built from them. Values from those two fields were placed into queries without being escaped, so a value containing a quote could change what the query did. Both fields are now escaped, and text carryin…
- Fixed automatic redirects being able to save a destination that cannot be reached. The destination was checked as a positive number but stored exactly as entered, so a value such as -3 was checked against page 3 and then stored as -3. Automatic redirects are created with nobody watching, so nothing…
- Fixed 404 URLs losing their hit counts and their “View Logs” row action when their log rows had no canonical URL recorded. Those rows were dropped from the hit-count roll-up entirely, with nothing to say so.
- Fixed the “Hits” columns going stale, or being rebuilt on every check along with a repeating admin notice, on sites whose database server is not set to UTC. The age of the hit-count roll-up was measured by comparing a time the database rendered in its own time zone against a time measured in UTC, s…
- Improvements
- The hit-count roll-up no longer runs at the very end of an admin request, where it added as much as 21 seconds to the page on a 900,000-row test site.
- On LiteSpeed servers the admin table response is handed back as soon as it is ready, instead of waiting for the rest of the request to finish.
- Creating, editing or deleting a redirect no longer scans the whole WordPress options table. The plugin was still clearing a results cache it stopped using in 4.3.1, and the pattern it searched for could not use an index, so on a site with a large options table every redirect change read the entire…
- When an admin action fails because the server or its gateway rejected the request, the message now names the underlying failure (for example “502 Bad Gateway”) instead of a generic “An error occurred”, and the full detail is written to the browser console. Saving settings, restoring defaults, switc…
404 Solution 4.3.2
- FIX: Fixed the email digest sending every day even when the notification frequency was set to Weekly (thanks to gardendarts for reporting this). The weekly/daily cadence is now enforced against the time the last digest was actually sent, and changing the frequency in Settings now takes effect on th…
- FIX: Fixed automatic error and heartbeat reports silently failing to send on some sites when an internal reporting component was unavailable.
- FIX: Fixed debug logs and automatic reports sometimes over-redacting the plugin’s own file names, option names, and URLs, including incorrectly truncating URLs that contained a query string.
- FIX: Fixed a rare issue where saving, publishing, or deleting content, or changing a category, during a plugin update could interrupt a scheduled background maintenance task.
- Improvement: Hardened several internal WordPress integration points (404 handling, REST API setup, log maintenance, and permission checks) so an unexpected internal error in one can no longer interrupt that request or affect other plugins.
- Improvement: Out-of-memory diagnostic reports now preserve the exact memory sizes involved, making them easier to diagnose.
- Improvement: Removed an internal AJAX diagnostics footer that no longer reflected real admin activity.
- Improvement: If you’ve opted in to “Help the developer with error logs and usage stats,” the optional weekly status ping now sends on a predictable weekly cadence (once the plugin’s been active 5+ days) instead of a rare random daily chance that averaged about once every 6 months. Same opt-in check…
- New: Added a “Never” option to the Email notification frequency dropdown, so you can fully turn off 404 email notifications without switching to Instant mode and separately zeroing the threshold.
- New: Added a “Your Diagnostic Data” card to the Options tab so you can download or delete the diagnostic data this plugin has reported for your site, in line with GDPR data access and erasure rights.
404 Solution 4.3.1
- FIX: Fixed an out-of-memory error (thanks to johnegg and kalshyre for reporting this).
- FIX: Fixed other things that looked like possible out-of-memory errors during maintenance.
- Improvement: Made automatic error reporting more robust to cover OOM as best as possible as well as other failure types.
404 Solution 4.3.0
- Bug Fixes
- Fixed locale-stale labels in the Page Redirects view cache by storing status and type as integer codes only, translating labels at render time, and dropping the legacy translated-label columns during upgrade.
- Fixed the Page Redirects and Captured 404s admin tabs still occasionally failing to load on high-traffic sites running 4.2.0. The 4.2.0 release notes claimed this was fixed, but only the cache-warmup race was addressed. A separate internal “mutation watermark” gate could still abort the cache rebui…
- Fixed a stale “No ID(s) found” notice appearing after a redirect was edited and saved successfully. The notice from the prior screen is now cleared so the success message stands alone.
- Fixed a stuck “Refreshing data… (stage 4)” badge that could remain on the Page Redirects pagination strip after a background refresh failed. The strip now collapses placeholder-only rows on a failed table load, and the error notice no longer competes with the 5-star review prompt for attention.
- Fixed generic “Something went wrong” messages on admin AJAX errors. The underlying cause is now appended in parentheses so the error is self-diagnosable, and the multi-stage diagnostic detail is tucked behind a collapsed Details panel.
- Fixed wp abj404 list not returning redirects that were just created via wp abj404 create in the same session, and corrected the --status=manual filter so manually-created redirects are returned.
- Fixed CSV-imported redirects not appearing in the Page Redirects table immediately after import. The cached view is now rebuilt synchronously when the import completes, so the table reflects the new rows on the next page load.
- Fixed a “table doesn’t exist” error path that could fire during a partial install or upgrade. The data layer now tolerates an unprepared $wpdb and surfaces a clean degraded state instead of a fatal.
- Fixed the plugin’s settings defaults not being available on the uninstall path, which could leave a stray option behind on some sites.
- Fixed a duplicate-accessible-name accessibility warning on the redirects list. The “Add Redirect” submit button inside the modal is now labeled “Add”, which removes the collision with the page-level “Add Redirect” action button.
- Fixed a fatal that could occur on the Plugins admin screen when wp-admin/includes/plugin-install.php was unavailable on hardened hosts (the include is now guarded with is_readable).
- Fixed a fail-open default in the REST captured-404s status filter that could return rows from an unintended status when an unknown filter value was supplied.
- Fixed the URL and Destination column-sort “being prepared” progress indicator that could stay stuck at 0% on large sites where a security plugin blocks the WordPress cron loopback. The one-time sort-key preparation is now driven by the admin’s own page view in the background, with a longer and gent…
- Improvements
- Several admin surfaces were restyled to match native WordPress chrome and feel quieter on the eye: the top sub-navigation now uses standard .nav-tab styling; the Edit Redirect form follows the native form-table shape; list-table filter rows use subsubsub pipe-separated links; status badges and pill…
- Several internal queries that scanned the full information_schema, post-type table, or content-keywords index on large sites are now bounded, removing a needless cost during background cache rebuilds. No behavior change for typical sites; smoother performance on sites with thousands of post types o…
- Changed the internal admin-notice payload schema to store translated message and guidance text directly, removing the message catalog indirection. No user-facing behavior change is expected.
- When a background refresh fails, a Support button is now mounted directly on the failure notice so the report path is one click instead of a hunt through Settings.
404 Solution 4.2.0
- Bug Fixes
- Fixed the “Page Redirects” and “Captured 404s” admin tabs occasionally failing to load on busy sites. The cache-warmup pipeline could race against ongoing 404 traffic and report that the data snapshot was missing even when the underlying query had succeeded. Admin tables on high-volume sites now lo…
- Improvements
- Substantial internal refactor of the data-access, view-build, and admin-mutation layers for long-term maintainability. No visible behavior change is expected; the version bump from 4.1.x to 4.2.0 reflects the size of the change.
404 Solution 4.1.19
404 Solution 4.1.18
404 Solution 4.1.17
404 Solution 4.1.16
404 Solution 4.1.15
404 Solution 4.1.13
404 Solution 4.1.12
404 Solution 4.1.11
404 Solution 4.1.10
404 Solution 4.1.9
404 Solution 4.1.8
404 Solution 4.1.7
404 Solution 4.1.6
404 Solution 4.1.5
404 Solution 4.1.4
404 Solution 4.1.3
404 Solution 4.1.2
404 Solution 4.1.1
404 Solution 4.1.0
404 Solution 4.0.4
404 Solution 4.0.3
404 Solution 4.0.2
404 Solution 4.0.1
404 Solution 4.0.0
404 Solution 3.3.7
404 Solution 3.3.6
404 Solution 3.3.5
404 Solution 3.3.4
404 Solution 3.3.3
404 Solution 3.3.1
404 Solution 3.3.0
404 Solution 3.2.2
404 Solution 3.2.1
404 Solution 3.2.0
404 Solution 3.1.10
404 Solution 3.1.9
404 Solution 3.1.8
202518 releases
404 Solution 3.1.7
404 Solution 3.1.6
404 Solution 3.1.5
404 Solution 3.1.4
404 Solution 3.1.3
404 Solution 3.1.2
404 Solution 3.1.1
404 Solution 3.1.0
404 Solution 3.0.8
404 Solution 3.0.7
404 Solution 3.0.6
404 Solution 3.0.5
404 Solution 3.0.4
404 Solution 3.0.3
404 Solution 3.0.2
404 Solution 3.0.1
404 Solution 3.0.0
404 Solution 2.36.10
202319 releases
404 Solution 2.35.7
404 Solution 2.35.6
404 Solution 2.35.5
404 Solution 2.35.4
404 Solution 2.35.3
404 Solution 2.35.2
404 Solution 2.35.1
404 Solution 2.35.0
404 Solution 2.34.0
404 Solution 2.33.2
404 Solution 2.33.1
404 Solution 2.33.0
404 Solution 2.32.2
404 Solution 2.32.1
404 Solution 2.32.0
404 Solution 2.31.13
404 Solution 2.31.12
404 Solution 2.31.11
404 Solution 2.31.10
202227 releases
404 Solution 2.31.9
404 Solution 2.31.8
404 Solution 2.31.7
404 Solution 2.31.6
404 Solution 2.31.5
404 Solution 2.31.4
404 Solution 2.31.3
404 Solution 2.31.2
404 Solution 2.31.1
404 Solution 2.31.0
404 Solution 2.30.16
404 Solution 2.30.15
404 Solution 2.30.14
404 Solution 2.30.13
404 Solution 2.30.12
404 Solution 2.30.11
404 Solution 2.30.10
404 Solution 2.30.9
404 Solution 2.30.8
404 Solution 2.30.7
404 Solution 2.30.6
404 Solution 2.30.4
404 Solution 2.30.3
404 Solution 2.30.2
404 Solution 2.30.1
404 Solution 2.30.0
404 Solution 2.30.5
Questions about 404 Solution’s releases
What is the latest version of 404 Solution?
4.3.6, released on Oct 2, 2026 (1 month ago). It’s tested up to WordPress 7.1.4 and needs PHP 7.4 or later.
How often is 404 Solution updated?
62 releases in the last year, about one every 5 days. Its first release on WordPress.org dates from March 2022.
Know when your rivals ship
Track your plugin and its rivals: TrackWP sees each new release in the nightly snapshot and alerts you, with what it did to their rank.
Start freeRelease dates come from the day each version’s folder was made in 404 Solution’s WordPress.org SVN repository; the notes from its readme’s changelog, as its authors wrote it.