{"id":330506,"date":"2026-06-23T19:12:50","date_gmt":"2026-06-23T19:12:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/onlinefotka-404-to-301-redirect\/"},"modified":"2026-06-23T19:25:05","modified_gmt":"2026-06-23T19:25:05","slug":"onlinefotka-404-to-301-redirect","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/onlinefotka-404-to-301-redirect\/","author":23503486,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Onlinefotka 404 to 301 Redirect","header_author":"Onlinefotka","header_description":"Automatically redirect 404 errors to any page, log every miss, notify by email, and manage custom redirect rules \u2014 with full WooCommerce support.","assets_banners_color":"14359e","last_updated":"2026-06-23 19:25:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/onlinefotka.sk","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"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":"onlinefotka","date":"2026-06-23 19:15:27"},"1.0.1":{"tag":"1.0.1","author":"onlinefotka","date":"2026-06-23 19:25:05"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3583685,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3583685,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3583685,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3583685,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Dashboard \u2014 stat cards, 30-day bar chart, top 10 missed URLs, top referrers","2":"Error Logs \u2014 searchable table with URL, referrer, IP, hit count and quick-redirect action","3":"Redirect Rules \u2014 add\/edit form with match type selector, sortable rules table, CSV import\/export","4":"Settings \u2014 redirect type, global target, logging options, email notifications, WooCommerce settings"}},"plugin_section":[262246],"plugin_tags":[932,905,727,186,286],"plugin_category":[45,55],"plugin_contributors":[263926],"plugin_business_model":[],"class_list":["post-330506","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-932","plugin_tags-905","plugin_tags-redirect","plugin_tags-seo","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-onlinefotka","plugin_committers-onlinefotka","plugin_support_reps-normandy88"],"banners":{"banner":"https:\/\/ps.w.org\/onlinefotka-404-to-301-redirect\/assets\/banner-772x250.png?rev=3583685","banner_2x":"https:\/\/ps.w.org\/onlinefotka-404-to-301-redirect\/assets\/banner-1544x500.png?rev=3583685","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/onlinefotka-404-to-301-redirect\/assets\/icon-128x128.png?rev=3583685","icon_2x":"https:\/\/ps.w.org\/onlinefotka-404-to-301-redirect\/assets\/icon-256x256.png?rev=3583685","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Onlinefotka 404 to 301 Redirect<\/strong> gives you complete control over how your WordPress site handles broken URLs \u2014 without touching any code.<\/p>\n\n<p>Catch every 404, redirect it intelligently, keep a detailed log, get notified by email, and manage unlimited custom rules. Built for both standard WordPress sites and WooCommerce stores.<\/p>\n\n<h3>Redirect Engine<\/h3>\n\n<ul>\n<li>Choose between 301, 302, 307, and 308 HTTP redirect codes<\/li>\n<li>Set a global fallback target for all unmatched 404s<\/li>\n<li>Add unlimited custom redirect rules with exact match, wildcard (* \/ **), regex, or prefix matching<\/li>\n<li>Drag-and-drop rule priority \u2014 the first matching rule wins<\/li>\n<li>Ignore query strings when matching (configurable)<\/li>\n<li>Exclude specific paths from being redirected or logged<\/li>\n<li>Bot detection \u2014 skip logging and redirecting known crawlers<\/li>\n<\/ul>\n\n<h3>Custom Redirect Rules<\/h3>\n\n<ul>\n<li>Add, edit, and delete rules directly in the admin<\/li>\n<li>Four match types: Exact, Wildcard, Regex, Prefix<\/li>\n<li>Per-rule HTTP code (301 \/ 302 \/ 307 \/ 308)<\/li>\n<li>Enable or disable individual rules without deleting them<\/li>\n<li>Import rules from CSV (columns: source, destination, match_type, http_code)<\/li>\n<li>Export all rules to CSV for backup or migration<\/li>\n<\/ul>\n\n<h3>Error Log<\/h3>\n\n<ul>\n<li>Detailed log of every 404 event: URL, referrer, IP, user agent, date\/time, hit count<\/li>\n<li>Same-day duplicate hits are counted (not duplicated) to keep the log clean<\/li>\n<li>Search and filter by URL or referrer<\/li>\n<li>Bulk delete or clear all logs with one click<\/li>\n<li>Export logs to CSV<\/li>\n<li>Quick-action button: create a redirect rule directly from any log entry<\/li>\n<li>Automatic log cleanup \u2014 configurable retention period (default: 90 days, runs via daily WP cron)<\/li>\n<\/ul>\n\n<h3>Statistics Dashboard<\/h3>\n\n<ul>\n<li>At-a-glance stat cards: total hits, today, last 7 days, active redirect rules<\/li>\n<li>Bar chart of 404 errors for the last 30 days (Chart.js)<\/li>\n<li>Top 10 most-missed URLs with one-click redirect creation<\/li>\n<li>Top referrers sending traffic to 404 pages<\/li>\n<li>WordPress admin dashboard widget with key stats<\/li>\n<\/ul>\n\n<h3>Email Notifications<\/h3>\n\n<ul>\n<li>Optional per-event email alerts for 404 errors<\/li>\n<li>Configurable recipient email address<\/li>\n<li>Hit threshold \u2014 only notify after a URL has hit X errors today<\/li>\n<li>Cooldown \u2014 prevent notification spam (configurable minutes between alerts)<\/li>\n<li>Digest mode \u2014 receive a daily or weekly summary email instead of per-event alerts<\/li>\n<li>Branded HTML email template (auto-detects site name and URL)<\/li>\n<\/ul>\n\n<h3>WooCommerce Integration<\/h3>\n\n<ul>\n<li>Auto-redirect deleted or trashed WooCommerce products to their category (or the shop page)<\/li>\n<li>Skip WooCommerce AJAX and REST API 404s to avoid interfering with blocks and cart<\/li>\n<li>HPOS (High Performance Order Storage) compatible<\/li>\n<li>WooCommerce Blocks compatible<\/li>\n<\/ul>\n\n<h3>Translations<\/h3>\n\n<p>The plugin interface is available in the following languages:<\/p>\n\n<ul>\n<li><strong>English<\/strong> (built-in)<\/li>\n<li><strong>Slovak<\/strong> (sk_SK)<\/li>\n<li><strong>German<\/strong> (de_DE \/ Deutsch)<\/li>\n<li><strong>Czech<\/strong> (cs_CZ \/ \u010ce\u0161tina)<\/li>\n<\/ul>\n\n<p>The <code>.pot<\/code> template is included in the <code>languages\/<\/code> folder. Contributions via <a href=\"https:\/\/translate.wordpress.org\/\">translate.wordpress.org<\/a> are welcome.<\/p>\n\n<h3>Requirements<\/h3>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>WooCommerce 7.0 or higher <em>(optional \u2014 WooCommerce features only)<\/em><\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin optionally connects to Google Search Console to help you find URLs that return 404 errors on your site. This feature is entirely optional and must be manually set up by the site administrator. No data is sent to any external service until the administrator explicitly connects their Google account.<\/p>\n\n<h4>Google OAuth 2.0<\/h4>\n\n<p>When you connect to Google Search Console, the plugin authenticates using Google's OAuth 2.0 service.<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Google OAuth 2.0 (<code>https:\/\/accounts.google.com<\/code>, <code>https:\/\/oauth2.googleapis.com<\/code>)<\/li>\n<li><strong>What is sent:<\/strong> OAuth authorization code and refresh token during the authentication handshake. Your Google client ID and client secret (entered by you in plugin settings) are used to request an access token.<\/li>\n<li><strong>When:<\/strong> Only when the administrator clicks \"Connect to Google\" and completes the OAuth flow, and subsequently when the access token is automatically refreshed.<\/li>\n<li><strong>Google Terms of Service:<\/strong> https:\/\/policies.google.com\/terms<\/li>\n<li><strong>Google Privacy Policy:<\/strong> https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h4>Google Search Console API<\/h4>\n\n<p>After connecting, the plugin can query the Google Search Console Search Analytics API to retrieve URLs from your verified property.<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Google Search Console API (<code>https:\/\/searchconsole.googleapis.com<\/code>)<\/li>\n<li><strong>What is sent:<\/strong> Your verified site URL and a date range (up to 480 days back), along with the OAuth access token for authorization. No personally identifiable visitor data is sent.<\/li>\n<li><strong>When:<\/strong> Only when the administrator manually clicks \"Fetch from GSC\" on the Google Search Console settings page.<\/li>\n<li><strong>Google API Terms of Service:<\/strong> https:\/\/developers.google.com\/terms<\/li>\n<li><strong>Google Privacy Policy:<\/strong> https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via <strong>Plugins \u2192 Add New<\/strong><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress<\/li>\n<li>Navigate to <strong>Tools \u2192 404 to 301<\/strong> to see the dashboard<\/li>\n<li>Go to <strong>Tools \u2192 404 to 301 \u2192 Settings<\/strong> to configure redirect behaviour<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20work%20without%20woocommerce%3F\"><h3>Does the plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. All core features (redirect, logging, email, custom rules) work on any WordPress site. WooCommerce-specific features (auto product redirect, skip AJAX\/REST) are only shown and active when WooCommerce is installed.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20301%20and%20302%3F\"><h3>What is the difference between 301 and 302?<\/h3><\/dt>\n<dd><p>A 301 tells search engines the page has permanently moved \u2014 pass SEO authority to the new URL. A 302\/307 is temporary \u2014 search engines keep indexing the old URL. Use 301 for pages that are gone for good.<\/p><\/dd>\n<dt id=\"does%20wildcard%20matching%20support%20query%20strings%3F\"><h3>Does wildcard matching support query strings?<\/h3><\/dt>\n<dd><p>Only if you disable \"Ignore Query Strings\" in Settings. By default the plugin strips query strings before matching, so <code>\/page\/?foo=bar<\/code> matches the rule <code>\/page\/<\/code>.<\/p><\/dd>\n<dt id=\"what%20does%20regex%20matching%20look%20like%3F\"><h3>What does regex matching look like?<\/h3><\/dt>\n<dd><p>Use a regex without delimiters: <code>^\/old-blog\/(.+)$<\/code>. The plugin wraps it in <code>#\u2026#i<\/code> delimiters automatically. You can reference capture groups in the destination using <code>$1<\/code>, <code>$2<\/code>, etc.<\/p><\/dd>\n<dt id=\"will%20old%20log%20entries%20be%20deleted%20automatically%3F\"><h3>Will old log entries be deleted automatically?<\/h3><\/dt>\n<dd><p>Yes. A daily WP Cron job deletes entries older than the configured retention period (default 90 days). You can change the period in Settings or set it to 0 to keep logs indefinitely.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20delete%20my%20data%20when%20uninstalled%3F\"><h3>Does this plugin delete my data when uninstalled?<\/h3><\/dt>\n<dd><p>No, by default. Enable \"Delete all data on uninstall\" in Settings \u2192 Data &amp; Uninstall if you want a clean removal.<\/p><\/dd>\n<dt id=\"can%20i%20import%20redirects%20from%20another%20plugin%3F\"><h3>Can I import redirects from another plugin?<\/h3><\/dt>\n<dd><p>Yes \u2014 export a CSV from your old plugin with columns <code>source, destination, match_type, http_code<\/code> and use the Import CSV function on the Redirect Rules page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed regex back-reference substitution in redirect rules<\/li>\n<li>Fixed cron duplication on plugin reactivation<\/li>\n<li>Fixed dead destination check cron missing on existing installs<\/li>\n<li>Fixed CSV export date using server timezone instead of WordPress timezone<\/li>\n<li>Added destination health check feature (weekly auto-check + manual button)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>301 \/ 302 \/ 307 \/ 308 redirect support<\/li>\n<li>Global fallback redirect target<\/li>\n<li>Custom redirect rules: exact, wildcard, regex, prefix match types<\/li>\n<li>Drag-and-drop rule priority<\/li>\n<li>Detailed 404 error log with hit count deduplication<\/li>\n<li>Log search, bulk delete, clear all, CSV export<\/li>\n<li>Auto log cleanup via daily WP Cron (configurable retention)<\/li>\n<li>Statistics dashboard: stat cards, 30-day bar chart, top 10 URLs, top referrers<\/li>\n<li>Admin dashboard widget<\/li>\n<li>Email notifications with threshold, cooldown and digest modes<\/li>\n<li>Branded HTML email template<\/li>\n<li>WooCommerce: auto-redirect deleted products to category \/ shop<\/li>\n<li>WooCommerce: skip AJAX and REST API 404s<\/li>\n<li>HPOS and WooCommerce Blocks compatible<\/li>\n<li>Import redirect rules from CSV<\/li>\n<li>Export redirect rules and logs to CSV<\/li>\n<li>Quick \"Add Redirect\" action from log rows<\/li>\n<li>Bot detection (skip logging crawlers)<\/li>\n<li>Exclude paths from redirect\/logging (fnmatch wildcards)<\/li>\n<li>Translations: English (built-in), Slovak (sk_SK), German (de_DE), Czech (cs_CZ)<\/li>\n<li>PHP 7.4+, WordPress 6.0+<\/li>\n<\/ul>","raw_excerpt":"Automatically redirect all 404 errors, log every miss, send smart email alerts, and manage custom redirect rules \u2014 with full WooCommerce support.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/330506","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=330506"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/onlinefotka"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=330506"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=330506"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=330506"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=330506"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=330506"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=330506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}