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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With