Redirects changelog
Every version, newest first, with the date it was released. Updates install from your Plugins screen.
1.8.1
- Improved The address of a removed page leads somewhere. An address that answers 410 now shows a page sized for phones, in your site's language, with a link to your home page, where it was one line of small print titled 410. Search engines still get the same 410.
- Fixed Only people who may add scripts to pages can redirect to another site. Under Who can manage redirects, a shop manager, or on a network any site administrator or editor, could point an address such as /checkout/ at a copy of the shop on another site. They can now redirect only to addresses on this site: the form says so before anything is typed, a refusal says why, switching such a redirect on is refused, and imports leave such rows out and say how many. Redirects to other sites that are already there keep working, and anybody who manages redirects can still switch them off or delete them. Administrators and editors of a single site, and WP-CLI, are not affected. A role editor plugin can give trrd_redirect_off_site to a role.
1.8.0
- New Editors and shop managers can manage redirects. Settings has Who can manage redirects: tick Editors, or Shop managers on a WooCommerce shop, and they get the Dashboard, Redirects, Broken links and the Old addresses panel beside the pages they edit. Settings, the licence, import and export stay with administrators, and every redirect is held to the same refusals (from 1.8.1, redirecting to another site also depends on the role). Until you choose, only administrators can, and the Dashboard asks once. A role editor plugin can give trrd_manage_redirects to any other role.
- Improved The Old addresses panel is quick on a site with many redirects. Finding the redirects that lead to a page now uses an index: well under a millisecond at fifty thousand, where every edit screen read the whole list. The index is added the first time wp-admin is opened after the update.
- Improved The plugin's screens load less. They no longer load WordPress's media library and colour picker, which none of them uses.
- Improved Faster pages on sites in Spanish or French. The translations now also ship as PHP files, which WordPress 6.5 and later reads from PHP's code cache instead of reading the translation file again on every page. Measured on a French site with all fifteen of our plugins: 6.3 ms and 0.8 MB of memory less on every request. Older WordPress reads the translations as before.
- Improved Opening the plugin's screens asks less of your server. To make switching tabs instant, the plugin loads its other screens in the background while you read the first one. It now loads at most four, the plugin's own tabs first, and none while the browser tab is in the background; a tab past the fourth loads as your pointer reaches it.
- Fixed Redirect each to where it lived no longer makes redirect chains. When where a deleted page lived was itself redirected, such as a category you had sent to a sale page, each new redirect pointed at the category's address, and the weekly check then flagged them all. They now point straight at the address visitors end up at, and one whose way passes a temporary redirect is left for you.
- Fixed No "deprecated" notice from Cloudflare's plugin when you save. With WP_DEBUG on and a current version of Cloudflare's plugin, emptying its cache printed a deprecation notice, which could stop a save from returning to its screen. Cloudflare is now asked under its current name, and the old one only on older copies.
- Fixed Notes that should be hidden stay hidden. A hint or note a screen had hidden could still show, because the style that lays hints out outranked the browser's own rule for hidden things. Hidden things on the plugin's screens now always stay hidden.
1.7.0
- New A deleted product, post or page offers where it lived as its redirect. On Broken links, a deleted product shows its category under Probably meant (the Yoast SEO or Rank Math primary category first), a child page its parent and a category its parent, and one click fills in the redirect form. Redirect each to where it lived does several at once after asking how many, and leaves alone any with no known home.
- New Point a redirect straight at its final address in one press. A redirect marked as pointing at another redirect has a button naming the final address, and Point each straight at its final address does several after asking. Saving a redirect to an address that is itself redirected offers the same change. A temporary redirect in the way is never skipped.
- Changed Redirects pointing at another redirect are counted apart from dead ends. The Dashboard said they lead nowhere, though their visitors arrive.
- Fixed Two redirects pointing at each other are marked as sending visitors round in a circle, not as a chain.
- Fixed On a network, WP Super Cache is emptied only for the site whose redirects changed, not for every site (except a save on the main site of a network in subfolders, whose cached pages hold the other sites', and WP Super Cache's legacy copies, which it always clears for every site).
- Fixed LiteSpeed Cache is asked to empty its pages only. With LiteSpeed Cache, a section redirect, or a change to more than a hundred redirects at once, pressed its Purge All, which also deletes its combined CSS and JS files, empties the object cache and PHP's code cache, clears Cloudflare where LiteSpeed is set to, and leaves "Purged all caches successfully." on your next screen. It now empties LiteSpeed's cached pages only.
Earlier versions
September 2026 30 versions
1.6.1
- Fixed A tagged link keeps every character of its tag through a redirect. With Carry anything after the ? through to the new page on (the default), spaces written as %20, accented letters and other encoded characters were taken out on the way, so Black%20Friday%202026 arrived as BlackFriday2026. The query now arrives as the visitor sent it, except a line break.
1.6.0
- New Changing your permalinks keeps old post, category and product addresses working. After a change of permalink structure, or of the category, tag or WooCommerce product base, a visit to an old address is sent to where its post, category or product lives now, and the redirect is added to the list. Switching back gives the old addresses back to WordPress. On for new installs; a site that had the plugin before is asked after its next permalink change. Older structures under Settings > Renamed pages covers a change made before installing.
1.5.3
- Fixed A long .htaccess or Nginx list no longer runs out of memory. A paste under Settings, or a file read with wp trrd import --htaccess, with many lines that cannot be read or one very long line, is now read within an ordinary memory limit. Every line that cannot be read is still counted, and deeply nested blocks for another domain are read in a moment.
- Fixed wp trrd import --htaccess refuses a file too long for a pasted list before reading it, so a large file named by mistake, such as a server log, gets that answer instead of running out of memory.
- Changed wp trrd import --htaccess lists the first 200 lines it could not read and says how many more there are, instead of printing every one.
1.5.2
- Fixed A line of HTML or an address in angle brackets no longer hides the redirects after it. In a pasted list, such a line is listed on its own and the redirects after it come across, instead of being listed with it.
- Fixed Conditional blocks in a pasted .htaccess stay whole in three more cases. A stray closing line inside a block (such as an HTML closing tag), a negated IfModule opening split over two lines, and an IfModule or VirtualHost opening carrying anything besides its module or addresses no longer let the block's redirects arrive as redirects for every visitor. They are listed with the block.
- Fixed A comment that ends in a backslash carries on to the next line, as Apache reads it. A redirect on the line below such a comment never ran on the old server, so it is now listed instead of imported.
1.5.1
- Fixed Redirects from Yoast SEO Premium land on the right page on a site in a folder. They no longer repeat the folder (/shop/shop/new-page). Redirects imported before this version keep the old destination: delete them under Redirects and import again.
- Fixed Redirection imports match what Redirection serves. A redirect switched back on inside a switched-off group now comes across, and when Redirection holds the same old address twice, the one it tries first is the one imported.
- Fixed Conditional blocks in a pasted .htaccess are listed, not imported. A block such as If, LocationMatch or IfVersion is listed whole, so its redirects no longer arrive as redirects for every visitor. Until 1.5.2 some could still come through in three cases: a negated IfModule opening split over two lines, a stray closing line inside a block (such as an HTML closing tag), or a comment ending in a backslash just above a block's closing line.
- Fixed The Old addresses box in the post editor is laid out properly. Its addresses are listed one to a line and a long one wraps to fit.
1.5.0
- New Bring your redirects with you. Import from Redirection, Rank Math, Yoast SEO Premium or Safe Redirect Manager, or paste them from an .htaccess or Nginx file. Preview shows what will arrive and what stays behind and why before you press Import. While the old plugin is still redirecting, the Dashboard says so until you dismiss the note.
- Improved The classic editor confirms an added old address. An old address added in the Old addresses panel is now confirmed in the panel after Update, as the block editor already did.
1.4.2
- Fixed An old address the Old addresses panel cannot add is said in the block editor. After Update, the block editor now shows the reason as its own notice and confirms an address it added, where both were silently lost; the classic editor shows a refusal in the plugin's own notice style. A page left open in the editor for a day or more still gets its answer.
- Fixed A redirect the Redirects form refuses comes back as you typed it. You stay on the redirect you were editing, with what you typed, instead of an empty form.
- Fixed French counts zero in the singular. French writes "0 message", not "0 messages", and the plugin's French now counts the way WordPress's own French does.
1.4.1
- Changed Binning or deleting a renamed page takes its old addresses to Broken links. When a renamed page, post or product goes in the bin or is deleted, its older addresses now join its own on Broken links and the redirects the plugin made for its renames are removed, because they led to a page that was gone; this happens while Broken links is on, and for one already in the bin when you update, once the bin is emptied. Publish it again from the bin and its redirects come back, pointing at where it is now, except at any address another page, category or redirect of yours has taken meanwhile.
- Fixed A link can no longer put its own words at the top of the Redirects screens. A link someone sent you could show any words it liked in a red notice there, or a message such as "Redirect deleted." when nothing had happened. A message now appears only right after you do something yourself, and the reason a redirect was refused is shown once, to you.
- Fixed Broken links fits a laptop screen. It no longer scrolls sideways there, and a long suggestion under Probably meant no longer runs under the Redirect this button. On a phone, the Broken links and Redirects tables scroll inside their own box instead of taking the whole page sideways.
- Fixed The Dashboard's Redirects card says its count includes renamed categories. It said those redirects were made when pages were renamed, though the count already included the ones made for renamed categories.
1.4.0
- New Renamed categories, tags and product categories keep their old address. Rename one, or move it under another parent, and its old address now sends visitors to the new one, as a renamed page's always has, and so does the address of every category under it; tags and product categories need pretty permalinks for this. It is part of the "Keep the old address working when a page is renamed" switch, so it is on wherever that is, and each redirect shows on the Redirects list as "from a renamed category". Deleting a category, tag or product category puts its address on Broken links as "you deleted this category", so you can choose where its visitors go.
- New Never list an address on Broken links again. Each address on Broken links has a new "Never list this again" button, also in the bulk actions, so an address a bot keeps asking for stays off the list instead of coming back the next time it asks. The addresses go into a new "Never list these addresses" box in Settings > Watching for broken links, where a line ending in * covers a whole section, and
wp trrd ignoreandwp trrd unignorechange it from the command line. The old Ignore button is now called "Remove from the list" and works as it always did: the address is listed again if somebody asks for it. - Changed A redirect made for a renamed page steps aside when a page takes that address again. Rename a page back to an address it once had, or publish a new page at an address a renamed page gave up, and the redirect the plugin made there is now deleted so the page itself answers. Before, it sent the page's own visitors away, and two pages that swapped names sent visitors back and forth between them until the browser gave up. A redirect you wrote yourself, or pointed somewhere else by hand, is never deleted this way.
- Fixed Renaming a page no longer overrules a redirect you changed yourself. A redirect the plugin made for a renamed page, which you had since pointed somewhere else, could be overwritten by a later rename; it now stays as you left it. A rename also makes no redirect when one of yours already sends the new address back to the old one, which would have sent visitors round in circles.
- Fixed Each button on Broken links tells a screen reader which address it is for. Every row has the same buttons, so a screen reader heard "Redirect this" with nothing to say which address it would redirect.
1.3.17
- Fixed Broken links keeps only the page a visitor came from, not the rest of its address. Anything after a question mark or a # sign is now left off, because it could carry a customer's order key or help-desk access key. On a site with plain permalinks, the part that names one of your own pages (such as ?p=12) is kept. Links already in the list are cut down the same way the first time wp-admin is opened after the update, on each site of a network.
- Fixed
wp trrd deleteremoves the redirect you named. On sites that match query strings, deleting /page.php?id=5 used to remove the rule for /page.php instead, and a section typed as /blog* was not found. - Fixed A redirect you add, change or delete clears that address from your page cache. Adding, changing, switching on or off, or deleting a redirect, including the one made for you when a page's address changes, now clears that address from NimbleCache, WP Rocket, LiteSpeed Cache, W3 Total Cache and WP Super Cache, so visitors get the redirect straight away instead of a cached copy of the old page. WP Fastest Cache, SiteGround Speed Optimizer, Breeze, WP-Optimize, Cloudflare's own plugin and older WP Super Cache releases cannot clear one address, so they are emptied whole instead, and a section rule or a change to more than a hundred redirects at once empties every cache. A cache WordPress cannot reach, such as some hosts' own, is not cleared.
- Fixed Importing redirects takes those addresses off Broken links. CSV imports, from the Redirects screen or
wp trrd import, andwp trrd addnow take the address of each redirect they save off the Broken links list, as saving one with the form always has. - Fixed
wp trrd add --statusrefuses a code it does not offer. Anything other than 301, 302, 307 or 410 is refused, instead of being quietly saved as the site's default status (301 unless changed). The command also says which status it saved, and says a 410 page is gone rather than that it redirects. - Fixed
wp trrd importsays when a file was too long to read in full. It warns how many rows after the first 20,000 it did not read, including when none of the rows it did read could be used. Before, it said nothing about them. - Fixed
wp trrd list --originrefuses a word it does not know, instead of listing every redirect. - Fixed Licensing and updates run on the newest licence code among our plugins. With several of our plugins on one site, they all now use the newest licence code any of them carries, whatever order WordPress loads them in. The exception is while the first of ours that WordPress loads (usually the alphabetically first) is on a release from before this one: its older code serves them all until that plugin is updated. An older plugin of ours can also no longer stop this plugin's admin screens loading.
1.3.16
- Fixed Editing a redirect can no longer lose it. When the database refuses the change, the redirect stays exactly as it was and the screen says it was not saved. It used to delete the rule you were editing and then tell you the redirect had been saved.
- Fixed Redirects for addresses with accents, spaces or other encoded characters keep working straight after an automatic update. The step that recognises them ran only inside the WordPress admin, so on a site updated in the background they sent visitors to a 404 until somebody happened to open an admin page.
- Fixed Importing a spreadsheet over redirects you already have keeps what the file cannot say. A redirect you had switched off stays off, unless the file itself says it is on. A row that still sends an address to the same page keeps that page's old address listing, and a row that sends it somewhere else lets the page go, exactly as editing the redirect by hand does.
- Fixed The search and filter boxes now filter. Type in one on the Redirects list or on Broken links, press Filter, and the list narrows with your words still in the box and in the address, so a filtered list can be bookmarked or sent to someone. "Test an address" on the Redirects screen answers now as well; all three used to look as though they had worked and come back with nothing changed.
- Fixed Broken links no longer drops pages whose titles are in another alphabet. A deleted page with a long title in Japanese, Russian, Greek or another non-Latin alphabet never reached the list at all, and a visit to a broken address was lost the same way when the page that sent the visitor had a long address of its own. Titles and referring addresses are cut by letters now rather than by bytes.
- Fixed
wp trrd exportwrites the same file as the Export button on the Redirects screen. Addresses with accents read correctly when you open it in a spreadsheet. With no file name it writes that whole file to the screen, byte order mark and all, so sending it to a file gives exactly the same thing. - New A "Check again" button on the licence screen. Renew your licence, or have it put right, and one press picks it up instead of waiting hours for the next automatic check. If the check cannot be made, the screen says why and changes nothing.
- Fixed An activation that fails because our licence server could not be reached no longer wipes your key. The key you had entered, and the list of sites using it, were thrown away on any failed attempt, leaving you to go and find the key again. They are kept now until the server actually passes judgement on the key.
- Fixed A key our licence server does not recognise can be typed over. The key box stays editable and the button still says Activate, instead of the screen offering nothing but "Deactivate this site" just after a notice told you to enter the key again.
- Fixed Check again, Deactivate this site and Free work with the key box empty. None of the three reads what is in the box, but all three used to answer "Enter your licence key first." and make no request.
1.3.15
- Fixed Importing a file you exported no longer adds its header row as a redirect. On a site running in Spanish or French the export translated the words at the top of the file and the importer knew only the English ones, so the header came back in as a live redirect from "Dirección anterior" to "Va a", counted in the tally and reported as a clean import. The file is now written with the same words whatever language you are reading in, and a file exported by an earlier version is still recognised as a header rather than read as a rule.
- Fixed Broken links and Redirects no longer say the list is empty when it is full. A page number can outlive the rows under it: a bookmark, the Back button after ignoring a batch, a second tab, or the nightly tidy-up shortening the list overnight. Asked for a page past the end, both screens answered "Nothing is breaking" or "No redirects yet" with no page links to get back. Each screen now shows the last page that exists, and the page links agree with the rows above them.
- Fixed Network activation only touches the sites of the network you switched it on for. On an installation running more than one network, switching the plugin on for one network also created its tables and timers on the other network's sites, and switching it off again stopped the weekly destination check on them.
- Fixed An apostrophe in an address is repeated back the way you typed it. The sentence confirming a save put a backslash in front of it, so a redirect saved for /o'connor-books/ was confirmed with a stray mark in the middle of the address. That line exists to show you the address you have just typed, so it now shows exactly that.
- Fixed Deleting the plugin now also clears away tables left behind by deleted network sites. A site deleted from a network while the plugin was switched on for that site alone left its redirects and its broken links behind in the database, because deleting a site never loads that site's plugins. Removing the plugin sweeps them away, and only after checking that the site really is gone.
- Improved The Redirects screen opens quickly on a long list. The newest-first order the screen opens on is indexed now, so a site that imported thousands of rules no longer reads the whole table to show twenty-five of them, on every page, search and click. The index is added on the first admin page after the update.
- Improved A site with hundreds of section redirects carries less on every request. The section rules held ready for matching now keep only the five fields that matching and sending need, instead of every column of every rule, and past five hundred of them they are looked up when they are needed rather than carried on every request, wp-admin and background jobs included. Past that point they are also read once a request however many addresses are looked at, which is what the weekly destination check and the address tester do many times over.
- Fixed Pressing "Check again" on the Updates screen looks for a new version straight away, even just after the site had trouble reaching us. One minute of blocked outbound traffic used to shut the button for every one of our plugins for a quarter of an hour.
1.3.14
- Fixed Redirects work for addresses with accented or non-Latin letters. An address pasted in its encoded form is also saved as the right address, and redirects made by earlier versions for such addresses keep working.
- Fixed Editing a switched-off redirect keeps it switched off, and the notice now says so. A redirect for a renamed page keeps following its page after an edit, and one pointed at a different page no longer shows among the old page's addresses.
- Fixed Sites that updated from an older version run the weekly check of redirect destinations.
- Improved The Broken links screen loads much faster on large sites. Suggested pages are remembered instead of searched for on every view.
- Fixed Checking redirect destinations no longer ties up the site or times out on hosts where the site cannot reach itself quickly.
- Fixed Activating from the command line no longer fails with a fatal error on some setups.
- Fixed Networks are tidied properly. Deleting or network-deactivating the plugin stops its scheduled jobs on every site, and new sites no longer get its tables and jobs unless the plugin is on for the whole network.
1.3.13
- Improved Fewer database queries on every admin page. Each of our plugins checks its licence on every admin screen, to know whether to show the licence notice, and read its saved licence and its "Remind me later" flag with a query each. With the whole range installed that was thirty separate lookups on every admin page, most of them for rows that do not exist yet. They are now read together in one query (on WordPress 6.4 or later). Measured on a test site with all fifteen plugins: the WordPress Dashboard went from 41 queries of ours to 12. A small value this plugin reads on every admin screen is also now loaded with the rest of the settings, rather than on its own.
1.3.12
- Improved A download is made once, not twice. Pressing Export redirects and Export settings built the file twice: the admin's no-reload navigation fetched it first, found a file rather than a screen it could show, and then asked for it again the ordinary way. On a long list that was twice the wait, and twice the work for the server. Each download is now a single request. Measured in a browser: two requests per click before, one after.
1.3.11
- Improved One update check for all of our plugins on a site, instead of one each. Every plugin of ours used to ask our server about updates separately — fifteen requests in a row on a site with the whole range, twice a day and every time you press "Check again". The first plugin asked now asks for all of them at once, and the rest read the answer. Measured on a site with all fifteen: fifteen requests became one, and the whole check took a third of a second. If our server refuses or cannot be reached, every plugin waits the same fifteen minutes before trying again, rather than each trying in turn.
1.3.10
- Fixed A wp-admin that would not load when our licence server could not be reached. Each of our plugins checked for its own updates, and if the server was unreachable each one waited out its own fifteen-second timeout — so a site with several of them could spend minutes on a single admin page, twice a day, for something entirely outside its control. The first one to find the server unreachable now says so for the whole site, and the others stand down until it is worth trying again. Measured on a site with fifteen installed: fifteen waits became one.
1.3.9
- Fixed "Delete everything on removal" was leaving one row behind — the note that remembers you dismissed a licence reminder. Tested by putting all four licence rows in place and removing the plugin: nothing is left now.
1.3.8
- Fixed The questions before emptying the broken links list, and before deleting a redirect, keep asking on sites with a strict security policy. Both were written into the page in a way that some sites block for safety, which quietly removed them.
1.3.7
- Fixed A setting that is waiting on another one is readable again. A field held back until you switch something else on is dimmed, so it does not look identical to one you simply have not used — but it was dimmed so far that its label and explanation fell below the contrast a person with ordinary eyesight needs. Measured on the rendered screen at 2.55:1 against the 4.5:1 minimum, and now 4.75:1 and 5.02:1. The greying, the sunken background and the blocked cursor carry the rest of the signal.
- Fixed Three dropdowns now say what they are. The sort and filter controls on the redirects and broken-links screens had no labels, so a screen reader announced them with no purpose.
1.3.6
- Fixed The daily tidy-up no longer holds the table while it runs. Clearing old rows from the broken links list was a single statement, however many rows matched. Measured on 300,000 of them: 6.63 seconds, and for all of it nothing else could write to the table. Worse, a host that cuts long queries off rolled the whole thing back — so nothing was deleted, there was more to delete the next day, and it quietly never caught up. It now goes a thousand rows at a time and stops after five seconds, leaving the rest for the next run.
1.3.5
- Fixed A site deleted from a network no longer leaves its tables behind. WordPress asks every plugin for the tables it owns when a site is removed, and this one never answered, so its redirects and its broken links list stayed in the database for ever with nothing left to say which site it had belonged to. On a network that creates and removes sites regularly that is thousands of orphan tables and a database that stops fitting in its backup window. Deleting a site now takes its redirects and its broken links list with it.
1.3.4
- Fixed Saving the Settings screen said only "Settings saved." Every other screen in the plugin names what it saved, and this one did not.
- Improved The help text under each setting can be read at a glance. A settings screen is scanned, not read, and several notes here had grown into paragraphs. They say the same thing in a line or two, in Spanish and French as well as English.
1.3.3
- Fixed This plugin's card in the catalogue was cut off mid-sentence. A card gives a product two lines and the browser silently trims the rest; this one had no short line of its own, so it fell back to the longer promise written for the top of its own page and lost the end of it.
1.3.2
- Improved The Import / Export panel says plainly what the file carries. It is settings only: nothing you have written or collected, and never a password, an API key or your licence key.
1.3.1
- Fixed This plugin's mark wore another plugin's colour. Every plugin in the catalogue has its own accent so the set reads as a family of distinct tools, and this one was given the same teal as Free Shipping Bar — which is invisible until the marks are drawn side by side, and they now are, on the front page of the website. It has its own colour.
1.3.0
- New An "Old addresses" panel beside the editor. Every page and post now shows those who manage redirects the addresses that already lead to it, with how many visitors each has brought, and takes one more without leaving the page. Renaming is handled for you; this is for the address a page had before you installed this plugin — and the moment you remember one is while you are looking at the page, not three menus away. Anything typed there goes through the same checks as the Redirects screen, and a refusal is said in the editor rather than quietly doing nothing.
- New Every screen has a command.
wp trrd list,add,delete,test,check,import,exportandbroken. This is the answer to two things a browser is genuinely bad at: importing the twenty thousand redirects a site arrives with from an old platform — where an upload limit, a time limit and a request that dies half way leave you guessing what got in — and asking thirty sites what is breaking without opening thirty tabs. - Improved Importing a spreadsheet is half the work it was. Every row was throwing away the lookup index and every row was rebuilding it, so importing ten thousand redirects meant twenty thousand pointless option writes for something rebuilt once at the end anyway. Measured on a 300-row file: 1,200 queries before, 603 after.
1.2.0
- New The plugin checks that your own redirects still work. A redirect rots quietly: you point
/old-pricesat/pricing, somebody renames/pricinga year later, and now everybody following an old link is caught and sent to a dead end anyway — with the rule sitting in the list looking perfectly healthy. Once a week each destination is asked whether it still answers. Anything wrong is marked in the list, counted on the Dashboard, and the list can be filtered down to just those. It catches a destination that is not found, one that points at another redirect, and one that points at itself. There is a Check them now button, and the weekly sweep works through sixty at a time so a large site is never asking itself hundreds of questions at once. - New "Probably meant" on the broken links list. Where there is an obvious candidate — a published page whose name is close enough to the broken address that it is almost certainly the one — it is offered, and clicking it fills in both halves of the redirect. Most rows stay blank on purpose: it only suggests when the match is good and clearly better than the runner-up, because a confident wrong suggestion is worse than none when somebody is working down a list at speed.
- Improved Two things are deliberately never judged, because a warning that is usually wrong is one nobody reads: a destination on somebody else's site, where a slow host would be reported as your broken redirect, and a section rule, since plenty of sites answer
/news/hellowhile/newsitself is a 404. - Fixed "Checked 430 redirects" on a site with four. The three numbers a check reports were packed into one value that had its separators stripped on the way back to the screen, so 4, 3 and 0 arrived as 430.
1.1.0
- New Test an address. Paste an address that is not doing what you expect and the Redirects screen tells you exactly what the site does with it: which redirect catches it, where it sends people, what it was measured as, and — when nothing catches it — why. It names the switched-off rule, the section rule that stops short, or says plainly that nothing on the site answers that address. Nothing is changed and nobody is redirected. It also spots a redirect pointing at another redirect, which works but costs the visitor a round trip and is invisible in a list.
- New A page you delete goes on the Broken links list. Renaming a page was already handled; deleting one is the other way to make a dead end, and unlike a rename there is nothing to work a destination out from. The address appears at the top of the list marked you deleted this page, carrying its title, with no hits — because the moment to deal with it is while you are thinking about it, not after the first complaint.
- New Do several at once. Tick the redirects you mean and switch them on, switch them off or delete them together; tick addresses on Broken links and ignore them together.
- Improved The visitor is sent on their way before anything is written down. Counting a redirect's use is a database write, and on a redirect catching thousands of visits a day it was the whole response time. The answer goes out, the connection is let go, and the counting happens after.
- Improved Paging that survives a long list. A button per page is fine at three pages and unusable at forty. First and last are always reachable, the current page sits in a short run, and there are Previous and Next.
- Fixed Binning a published page made a redirect into the bin. WordPress renames a trashed page's address by putting
__trashedon the end, which looks exactly like a rename — so the plugin dutifully made a permanent redirect from the page's real address to?page_id=22, labelled "from a rename", for a page the person had just deleted. Binning and unpublishing are removals now, and go on the Broken links list instead. - Fixed Every action on the redirects list ran as a single-row action. Each row's buttons were a small form of their own inside the list, and a form inside a form is one the browser throws away — but its hidden fields join the outer one, so whichever row happened to be last decided what the bulk bar did.
1.0.0
- New First release. Rename a published page and its old address keeps working, on its own — the redirect is made as you save and appears in the list, where you can change it or delete it. Rename the same page twice and the first one follows rather than leaving a chain.
- New A list of what is actually breaking. Every address somebody asks this site for and does not find, busiest first, with the page that linked to it — and a button beside each one that fills in a redirect for it. Scanner probes and missing files are left out, so the list is the real problems rather than the noise. Nothing about the visitor is recorded.
- New Redirects that catch the address however it is written.
/Old-Page/,/old-page, a whole URL pasted from an email and one with a campaign tag on the end are all one address, and one rule catches all of them. Campaign tags are carried through to the new page, so your analytics still say where the visitor came from. (Until 1.6.1, spaces written as %20, accents and other encoded characters in a tag were dropped on the way.) - New Move a whole section with one rule.
/blog/to/news/sends every page under one to the matching page under the other; leave the star off the destination and they all land on one page. A star only ever cuts at a slash, so/blog/*never catches/blogging-tips. - New 301, 302, 307 and 410. Permanent, temporary, and gone — the last being the fastest way to get a discontinued product out of search results rather than bouncing people to your home page.
- New It refuses to lock you out. A rule over
/wp-admin, the login page or the whole site is refused as you write it, with a sentence saying why. So is one that points an address at itself, and that is checked again when it runs — because a site can move under a rule that was fine yesterday. - New Bring your redirects with you. Import a spreadsheet from whatever you used before — a header row or none, any recognisable column order, commas or semicolons — and export yours at any time. Settings move separately, as a small file, and never carry your licence key.
- New A visit that matches nothing costs nothing. The addresses that have a redirect are held in memory as a set of small numbers, so nearly every visit never reaches the database at all.
Pricing
Every plan includes every feature. Choose how many domains, and whether to pay yearly or once.
Pay yearly renews until you cancel
1 domain
One year of updates and support
5 domains
One year of updates and support
Unlimited domains
One year of updates and support
Pay once (lifetime) no renewals
5 domains
Updates and support for as long as we publish it
Unlimited domains
Updates and support for as long as we publish it
- Every plan includes every feature. You choose only the number of domains.
- 30-day refund, no reason needed. Refund policy
- Licence key and download straight after payment, by Stripe.
- A lapsed licence stops updates and support. It never switches a feature off.
- Local, development and staging copies are free and do not count against your domains.
- Yearly plans renew at the then-current price until you cancel. Cancel any time from your account.
- Where tax applies it is calculated at checkout and shown before you pay.