WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How do I skip wordpress's 404 handling and redirect all 404 errors for static files to 404.html?

I read and it seems its not possible when using permalinks?

The objective is to reduce the server load for 404 errors by not loading php.

share|improve this question
up vote 4 down vote accepted

.htaccess skip WordPress 404 error handling for static files.

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
        RewriteCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
        RewriteRule .* - [L]

Note: These rules were generated by the W3 Total Cache plugin*

Nginx skip WordPress 404 handling for static files.

if (-f $request_filename) {
if (-d $request_filename) {
if ($request_uri ~ "(robots\.txt|sitemap\.xml(\.gz)?)") {
if ($request_uri ~* \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$) {
    return 404;
share|improve this answer
Thanks, the W3TC rules did work! – freethinker Aug 3 '11 at 2:01

simple solution: use the conditional tag is_404() and create an redirect to your static file; include the code in the header.php or index.php of the theme. maybe a example from scratch.

   if ( is_404() ) {
      wp_redirect( 'static.htm' );


share|improve this answer
the decision making is still done in PHP here and not at htaccess level. The aim is to skip the loading of PHP altogether for 404 errors. – freethinker Aug 2 '11 at 5:19
@kaiser: right. thanks; i have edit the answer. – bueltge Aug 2 '11 at 19:40
@freethinker: right, only via php; the way via htaccess is faster, but maybe not so easy handling in WordPress – bueltge Aug 2 '11 at 19:41
@kaiser oops, updated the question – freethinker Aug 2 '11 at 23:44

I'm not sure that this is possible. If you look at the htaccess code that WordPress creates when you enable permalinks, it basically says: "If the file/directory cannot be found, send it to index.php." This includes all actual 404 requests. Outside of creating a list of every dynamically-generated public resource that WordPress knows of and directly inserting this into .htaccess, you'll need to load php to handle the 404's.

share|improve this answer

To extend on what Chris_O said....I would install W3 Total Cache and use the settings from that plugin to not cache static files. The plugin in itself is very useful and a must to speed up your site, especially with the latest update.

Also I recommend you have a look at Creating an Error 404 Page from Wordpress to see how to handle 404 for static files, 403 (forbidden), etc. Its a good read.

share|improve this answer

There are 3 ways of doing this

  1. By changing your 404.php code.
  2. By using wordpress plugins.
  3. By editing your .htaccess file .

Complete tutorial - How to Redirect 404 Error in WordPress

share|improve this answer
Hi Mazhar, could you post a full answer, rather than just a link to your site. If that link dies, this answer will be pretty much useless! Cheers! – Stephen Harris Sep 27 '12 at 9:35
this page gives a 404. Ironic. Or are you trying to say something? – Michiel van der Blonk Sep 16 '15 at 2:49

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.