ci sono un paio di possibili approcci a questo, ma vorrei fare una delle seguenti:
È possibile utilizzare mod_rewrite
, come suggerito da @LazyOne, per reindirizzare solo i file con estensione .php
al documento personalizzato:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f # Only redirect to error for files that don't exist
RewriteRule ^(.*)\.php$ /404.php [L]
oppure si può dirigere tutto attraverso il gestore degli errori di PHP come già fate, e utilizzare PHP per determinare se la risorsa richiesta è uno script PHP o no:
<?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
Lo svantaggio di questo secondo approccio è che potrebbe essere necessario riscrivere il documento di errore standard in modo che utilizzasse PHP per ottenere informazioni dinamiche da visualizzare all'utente, tali e il percorso della risorsa richiesto.
che cosa si intende per "prende tutto"? 404 è un codice di risposta per qualsiasi richiesta HTTP che non viene trovata, indipendentemente dalla richiesta php o da un'immagine. –
quello che voglio dire è che se faccio www.example.com/img/errorimg.jpg mi condurrà a www.example.com/404.php, e non voglio che ... – user1040899
Puoi prova a implementarlo con Riscrittura di URL (mod_rewrite) - reindirizza le richieste a qualsiasi file .php non esistente sul tuo 404.php personalizzato - è possibile (solo 3 o 4 linee) – LazyOne