Title: 4zero4
Author: Fabio Moro
Published: <strong>March 7, 2019</strong>
Last modified: June 4, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/4zero4.svg)

# 4zero4

 By [Fabio Moro](https://profiles.wordpress.org/devfabio/)

[Download](https://downloads.wordpress.org/plugin/4zero4.1.2.zip)

 * [Details](https://wordpress.org/plugins/4zero4/#description)
 * [Reviews](https://wordpress.org/plugins/4zero4/#reviews)
 *  [Installation](https://wordpress.org/plugins/4zero4/#installation)
 * [Development](https://wordpress.org/plugins/4zero4/#developers)

 [Support](https://wordpress.org/support/plugin/4zero4/)

## Description

4zero4 makes your 404 pages useful. When a visitor reaches a URL that no longer

exists, the plugin builds a search query from the requested address and redirects
the visitor to your site’s search results, so they land on relevant content instead
of an empty error page.

For example, a request for `/my-old-product-name/` that no longer resolves is
 turned
into a search for “my old product name”.

Key points:

 * **Zero configuration.** Activate it and it works.
 * **Temporary redirect (302).** The original URL may become valid again, so the
   
   redirect is never cached as permanently moved.
 * **Front-end only.** It never interferes with the admin area, feeds or the REST
   
   API, and only acts on normal GET page views.
 * **No external services.** The plugin does not send any data anywhere and does
   
   not use tracking or analytics.

#### Developer hooks

The behaviour can be customised with filters:

 * `p4zero4_search_terms` — change (or clear, to skip) the terms extracted from 
   the URL.
 * `p4zero4_redirect_url` — change (or clear, to cancel) the destination URL.
 * `p4zero4_redirect_status` — change the HTTP status code (default `302`).

## Installation

 1. Upload the `4zero4` folder to `/wp-content/plugins/`, or install the plugin
     from
    the Plugins screen in WordPress.
 2. Activate the plugin through the “Plugins” menu in WordPress.
 3. That’s it — there are no settings. Any 404 will now redirect to a matching
     site
    search.

## FAQ

### Does the plugin have a settings page?

No. It works out of the box with no configuration.

### Why am I redirected with a 302 and not a 301?

A 404 is, by definition, temporary: the page might be restored later. A permanent

301 redirect would be cached by browsers and search engines and would be hard to
undo. You can change the status code with the `p4zero4_redirect_status` filter.

### Can I customise the search terms or the destination?

Yes. Use the `p4zero4_search_terms`, `p4zero4_redirect_url` and
 p4zero4_redirect_status
filters described in the Description.

### Does the plugin send any data to external services?

No. It performs a local redirect on your own site and contacts no third party.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“4zero4” is open source software. The following people have contributed to this 
plugin.

Contributors

 *   [ Fabio Moro ](https://profiles.wordpress.org/devfabio/)

“4zero4” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/4zero4/contributors)
for their contributions.

[Translate “4zero4” into your language.](https://translate.wordpress.org/projects/wp-plugins/4zero4)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/4zero4/), check out
the [SVN repository](https://plugins.svn.wordpress.org/4zero4/), or subscribe to
the [development log](https://plugins.trac.wordpress.org/log/4zero4/) by [RSS](https://plugins.trac.wordpress.org/log/4zero4/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2

 * Security: the requested URL is now read, unslashed and sanitised safely instead
   
   of using a raw server variable.
 * Redirects now use `wp_safe_redirect()` with a temporary 302 status instead of
   a
    raw permanent 301 header.
 * Switched to the `template_redirect` hook and added guards for admin, feeds, REST
   
   and non-GET requests.
 * Added a guard against direct file access (ABSPATH check).
 * Added the `p4zero4_search_terms`, `p4zero4_redirect_url` and
    p4zero4_redirect_status
   filters.
 * Completed the plugin header (License, Text Domain, Requires at least, Requires
   PHP).
 * Rewrote the readme in English with full sections; fixed the Stable tag to match
   
   the plugin version.

#### 1.1

 * Previous public release.

## Meta

 *  Version **1.2**
 *  Last updated **1 week ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [Dutch (Belgium)](https://nl-be.wordpress.org/plugins/4zero4/) and [English (US)](https://wordpress.org/plugins/4zero4/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/4zero4)
 * Tags
 * [404](https://wordpress.org/plugins/tags/404/)[error page](https://wordpress.org/plugins/tags/error-page/)
   [redirect](https://wordpress.org/plugins/tags/redirect/)[search](https://wordpress.org/plugins/tags/search/)
 *  [Advanced View](https://wordpress.org/plugins/4zero4/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/4zero4/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/4zero4/reviews/)

## Contributors

 *   [ Fabio Moro ](https://profiles.wordpress.org/devfabio/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/4zero4/)