Есть несколько возможных подходов к этому, но я бы сделал один из следующих:
Вы можете использовать mod_rewrite
, как предлагает @LazyOne, для перенаправления только файлов с расширением .php
в ваш пользовательский документ:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f # Only redirect to error for files that don't exist
RewriteRule ^(.*)\.php$ /404.php [L]
Или вы можете направить все через обработчик ошибок PHP, как вы уже делаете, и использовать PHP, чтобы определить, является ли запрашиваемый ресурс сценарием PHP или нет:
<?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
Недостаток этого второго подхода заключается в том, что вам может потребоваться переписать стандартный документ об ошибках, чтобы он использовал PHP для получения динамической информации для отображения пользователю, такой как и запрошенный путь к ресурсу.