Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom 404 error page -- for PHP pages only

I have a personalized page for 404 with htaccess

ErrorDocument 404 /404.php

It works fine, but it takes everything .jpg, .js, .css etc...
I would like it to just take the .php and do a normal 404 error for all others.

I didn't find that option anywhere.

Thank you very much.

like image 776
user1040899 Avatar asked Mar 09 '12 09:03

user1040899


2 Answers

Not sure but give this a try:

<Files ~ "\.php$">
    ErrorDocument 404 /404.php
</Files>

Quote from Files Directive documentation:

The <Files> directive limits the scope of the enclosed directives by filename.

like image 97
Salman A Avatar answered Sep 22 '22 01:09

Salman A


There are a few possible approaches to this, but I would do one of the following:

You can use mod_rewrite, as suggested by @LazyOne, to redirect only files with a .php extension to your custom document:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f # Only redirect to error for files that don't exist
RewriteRule ^(.*)\.php$ /404.php [L]

Or you can direct everything through the PHP error handler as you already do, and use PHP to determine whether the requested resource is a PHP script or not:

<?php

  if (strtolower(substr($_SERVER['SCRIPT_URL'], -4)) != '.php') {
    // If the requested resource does not have a .php extension, include the standard error doc and exit
    include '404.html';
    exit;
  }

  // Handle .php 404s here

The disadvantage of this second approach is that you may need to rewrite the standard error document so that it used PHP to get dynamic information to display to the user, such and the requested resource path.

like image 44
DaveRandom Avatar answered Sep 24 '22 01:09

DaveRandom