{"id":383826,"date":"2026-10-12T10:25:48","date_gmt":"2026-10-12T10:25:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fallbackredirect\/"},"modified":"2026-10-12T10:25:26","modified_gmt":"2026-10-12T10:25:26","slug":"fallbackredirect","status":"publish","type":"plugin","link":"https:\/\/et.wordpress.org\/plugins\/fallbackredirect\/","author":20815504,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"FallbackRedirect","header_author":"Alex Hedstr\u00f6m","header_description":"Redirect manager for 301, 302, and 307 redirections. Monitor and fix 404 errors, log every broken link, and protect your SEO after a migration.","assets_banners_color":"","last_updated":"2026-10-12 10:25:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/fallbackredirect.com","header_author_uri":"https:\/\/alexhedstrom.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"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":"alexhedstrom","date":"2026-10-12 10:25:26","revision":3741094}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[932,735,905,727,186],"plugin_category":[55],"plugin_contributors":[259029],"plugin_business_model":[],"class_list":["post-383826","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-932","plugin_tags-735","plugin_tags-905","plugin_tags-redirect","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-alexhedstrom","plugin_committers-alexhedstrom"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/fallbackredirect.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>FallbackRedirect keeps old URLs working after you rename pages, move a site, or delete content. It stores redirect rules, serves 301 \/ 302 \/ 307 responses on the front end, and logs unique 404s so you can turn the worst broken links into redirects.<\/p>\n\n<p>Under Settings \u2192 FallbackRedirect you get six tabs:<\/p>\n\n<ul>\n<li>Overview \u2014 open 404s, redirect hits, a 14-day chart, and the top broken links<\/li>\n<li>Redirects \u2014 add, edit, disable, or delete rules (exact, prefix, wildcard, or regex)<\/li>\n<li>404s \u2014 grouped broken links with hit counts, last referrer, one-click repair, ignore, and CSV export<\/li>\n<li>Migration \u2014 CSV import\/export and automatic 301s when a published permalink changes<\/li>\n<li>Settings \u2014 engine, monitor, privacy, retention, and uninstall cleanup<\/li>\n<li>About \u2014 plugin info and version<\/li>\n<\/ul>\n\n<p>How SEO protection works:<\/p>\n\n<ul>\n<li>Front-end matching runs on <code>template_redirect<\/code> before the theme 404 template<\/li>\n<li>Exact rules are looked up by hash; prefix, wildcard, and regex rules are checked next<\/li>\n<li>Changing a published post or page permalink can auto-create a 301 from the old path<\/li>\n<li>Looping rules (same source and destination on this site) are rejected<\/li>\n<li>Admin, login, and cron paths cannot be used as sources<\/li>\n<li>404s ignore bots, logged-in users, static file extensions, <code>.php<\/code> probes, and wp-includes \/ plugin \/ theme scans by default<\/li>\n<li>IP addresses are stored as a salted hash, not in the clear<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>fallbackredirect<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the Plugins menu in WordPress.<\/li>\n<li>Open Settings \u2192 FallbackRedirect.<\/li>\n<li>Add redirects, or wait for 404s to appear and repair them from the 404s tab.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20redirect%20types%20are%20supported%3F\"><h3>Which redirect types are supported?<\/h3><\/dt>\n<dd><p>301 (permanent), 302 (temporary), and 307 (temporary, keep the original HTTP method). Use 301 after a real move so search engines transfer equity.<\/p><\/dd>\n<dt id=\"what%20happens%20after%20a%20site%20migration%3F\"><h3>What happens after a site migration?<\/h3><\/dt>\n<dd><p>Import a CSV of old path \u2192 new destination on the Migration tab. FallbackRedirect also creates 301s when you rename a published permalink. Review the 404s tab for anything the import missed.<\/p><\/dd>\n<dt id=\"how%20should%20the%20csv%20look%3F\"><h3>How should the CSV look?<\/h3><\/dt>\n<dd><p>source,target,status_code,match_type \u2014 status and match type are optional. Example: <code>\/old-about\/,\/about\/,301,exact<\/code>. You can paste full URLs; the plugin stores the path. Maximum 1,000 data rows and 512 KB per import.<\/p><\/dd>\n<dt id=\"will%20this%20redirect%20wp-admin%3F\"><h3>Will this redirect wp-admin?<\/h3><\/dt>\n<dd><p>No. <code>\/wp-admin<\/code>, <code>wp-login.php<\/code>, <code>wp-cron.php<\/code>, and <code>xmlrpc.php<\/code> are blocked as sources.<\/p><\/dd>\n<dt id=\"are%20regex%20redirects%20safe%3F\"><h3>Are regex redirects safe?<\/h3><\/dt>\n<dd><p>Patterns are validated before save, compiled with PCRE match and depth limits, and skipped if they fail or do not compile. Keep them short. Capture groups (<code>$1<\/code>) can be reused in the destination. In a wildcard, each <code>*<\/code> is a capture too (<code>$1<\/code>, <code>$2<\/code>, and so on). A dollar sign that is not a capture, such as <code>$100<\/code>, is kept as written. Patterns may start with <code>^<\/code> and may contain <code>#<\/code>. Relative destinations stay on this site, including when WordPress is installed in a subdirectory.<\/p><\/dd>\n<dt id=\"what%20404%20data%20is%20stored%3F\"><h3>What 404 data is stored?<\/h3><\/dt>\n<dd><p>The requested path, hit count, first and last seen time, last referrer, a hashed IP, and a status (open, ignored, or redirected). Raw IPs and browser user agents are not stored. Retention and a unique-URL cap are configurable.<\/p><\/dd>\n<dt id=\"does%20uninstall%20delete%20my%20redirects%3F\"><h3>Does uninstall delete my redirects?<\/h3><\/dt>\n<dd><p>Only if you enable Delete data on uninstall. By default, uninstall removes settings and the cleanup cron; tables stay so a mistaken delete does not wipe a migration map.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20wordpress%20multisite%3F\"><h3>Does it work on WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. Network-activating sets up every site. New sites created while the plugin is network-active are set up automatically. Uninstall and network deactivation also walk all sites.<\/p><\/dd>\n<dt id=\"behind%20a%20reverse%20proxy%3F\"><h3>Behind a reverse proxy?<\/h3><\/dt>\n<dd><p>By default the plugin uses REMOTE_ADDR when hashing IPs for 404 logs. If your host sits behind Cloudflare or another proxy that overwrites client IP headers, enable Trust proxy IP headers in Settings. Do not enable it on a publicly reachable origin that does not sanitize X-Forwarded-For.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Redirect manager for 301, 302 and 307 redirections. Monitor and fix 404 errors, log every broken link, and protect your SEO after a migration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/383826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=383826"}],"author":[{"embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alexhedstrom"}],"wp:attachment":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=383826"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=383826"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=383826"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=383826"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=383826"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=383826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}