Istnieje kilka możliwych podejść do tego, ale chciałbym zrobić jedną z następujących czynności:
Można użyć mod_rewrite
, jak sugeruje @LazyOne, aby przekierować tylko pliki z rozszerzeniem .php
do dokumentu niestandardowego:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f # Only redirect to error for files that don't exist
RewriteRule ^(.*)\.php$ /404.php [L]
albo można kierować wszystko przez procedury obsługi błędów PHP jak już robić i korzystać z PHP w celu ustalenia, czy żądany zasób jest skrypt PHP czy nie:
<?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
Wadą tego drugiego podejścia jest to, że może być konieczne ponowne napisanie standardowego dokumentu błędu, tak aby użył PHP do uzyskania dynamicznych informacji do wyświetlenia użytkownikowi, takiemu, jak i żądanej ścieżce zasobu.
co masz na myśli przez „to bierze wszystko”? 404 to kod odpowiedzi dla każdego żądania HTTP, które nie zostało znalezione, bez względu na to, czy jest to żądanie php, czy obraz. –
mam na myśli to, że jeśli zrobię www.example.com/img/errorimg.jpg, zaprowadzi mnie on do www.example.com/404.php, a ja tego nie chcę ... – user1040899
Możesz spróbuj zaimplementować to za pomocą Przepisywania URL (mod_rewrite) - przekierować żądania do dowolnego nieistniejącego pliku .php do niestandardowego 404.php - to jest możliwe (tylko 3 lub 4 linie) – LazyOne