Dirottare l’errore 404 (pagina non trovata) verso la home page in Joomla 1.5
4 Agosto 2012Il Bootstrap Framework di Twitter su Joomla! 2.5
8 Agosto 2012L’errore 404 è la risposta prevista dallo standard HTTP quando un visitatore del sito web non può accedere ad un dato contenuto.
E’ un errore che si incontra piuttosto comunemente quando si spostano o cancellano determinate pagine senza modificare i link che vi accedono o mentre i motori di ricerca attendono di essere aggiornati.
All’errore 404 corrisponde normalmente una pagina d’errore standard del server http, unA pagina d’errore bruttina che rende l’esperienza dell’utente del sito piuttosto fastidiosa.
Fortunatamente il serve Apache consente, tramite il suo file di configurazione .htaccess, di dirottare ad una pagina specifica l’utente in caso di errore 404; basta aggiungere la riga
ErrorDocument 404 /404.php
al file .htaccess.
404.php è la pagina di destinazione che si trova in questo caso nella radice (/) dello spazio web.
Chiaramente la pagina di arrivo si può personalizzare a piacimento.
2 Comments
Ciao Giorgio.
Vorrei chiedere come si fa un reindirizzamento di errore 404 di una URL con slash finale forzato in htaccess. Ad esempio http://www.example.com/page-not-found/
Una URL del genere, nel mio sito (http://oristano.altervista.org/), non reindirizza alla pagina 404.php creata ma visualizza il template del sito senza contenuto.
Sia il file htaccess che il file 404.php si trovano nella ROOT del sito
Posto il mio codice htaccess
Options +FollowSymLinks -MultiViews
AddDefaultCharset UTF-8
RewriteEngine On
DirectoryIndex index.php
RewriteBase /
#
# PROC/SELF/ENVIRON? NO!
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
#
# BLOCCO ACCESSO AL FILE .HTACCESS
Order allow,deny
Deny from all
Satisfy All
#
# FORZA AGGIUNTA DELLO SLASH / ALLA FINE DELLA URL
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
#
# RIMUOVE INDEX.PHP DALLA URL
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
#
# RISCRIVE URL
RewriteRule ^([^/]*)/$ index.php?id=$1 [L]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?id=$1&sezione=$2 [L]
#
# ERRORE PAGINA NON TROVATA
ErrorDocument 404 /404.php
#
php_flag magic_quotes_gpc off
Buongiorno Giuseppe,
la regola RewriteRule ^([^/]*)/$ index.php?id=$1 [L] trasforma l’url di qualsiasi pagina del tipo http://oristano.altervista.org/pagina_non_trovata/ in http://oristano.altervista.org/index.php?id=pagina_non_trovata, indirizzo che non genera a livello di server un errore 404. Dovresti modificare l’index.php per gestire il caso di pagina con id inesistente, redirigendolo lì alla pagina 404.php. Per sapere come si può fare, puoi consultare la pagina https://www.mrwebmaster.it/php/redirect-php_7866.html