2010-08-03 17 views
21

Sto tentando di creare un errore 404 personalizzato per il mio sito web. Lo sto testando usando XAMPP su Windows.Problemi di errore 404 personalizzati con Apache

La mia struttura di directory è la seguente:

error\404page.html 
index.php 
.htaccess 

Il contenuto del mio file .htaccess è:

ErrorDocument 404 error\404page.html 

Questo produce il seguente risultato:

alt text http://i38.tinypic.com/24qk0fk.jpg

Tuttavia questo non funziona - è qualcosa a che fare con la w sono le barre o come dovrei fare riferimento al documento di errore?

i documenti del sito risiedono in una sottocartella della radice Web se questo fa alcuna differenza rispetto a come dovrei fare riferimento?

Grazie in anticipo.

Quando cambio il file per essere

ErrorDocument 404 /error/404page.html 

ricevo il seguente messaggio di errore che non è ciò che si trova all'interno del file html che ho collegato - ma è diverso da ciò che è elencato sopra:

alt text http://i32.tinypic.com/kci5b7.jpg

+2

Hai provato a cambiare la barra in una barra? Non sono sicuro che Apache supporti i backslash. –

+0

ErrorDocument 404 /error/404page.html è quello che è ora e questo genera un'eccezione 404 - tuttavia questa non è l'eccezione che si trova nel file html che ho collegato. – Malachi

risposta

53

La direttiva ErrorDocument, quando fornito un percorso URL del luogo, si aspetta il percorso per essere pienamente qualificato dal DocumentRoot. Nel tuo caso, questo significa che il percorso effettivo al ErrorDocument è

ErrorDocument 404 /JinPortfolio/error/404page.html 

Quando corretti nel vostro secondo tentativo, la ragione si vede che la pagina invece è perché http://localhost/error/404page.html non esiste, da cui il po 'di là essere un errore 404 nella localizzazione del documento di gestione degli errori.

+0

Basta dichiararlo in htaccess? Ho un messaggio di errore del server! –

+0

Beh, non lo capisco mai. :(Ho sempre errore! – Hydro

11

. I file .htaccess sono disabilitati per impostazione predefinita in Apache in questi giorni, a causa di problemi di prestazioni. Quando i file .htaccess sono abilitati, il server Web deve controllarlo ad ogni hit in ogni sottodirectory da dove risiede.

Appena immaginato era importante notare. Se si desidera attivare file .htaccess in ogni caso, ecco un link che spiega:

http://www.tildemark.com/enable-htaccess-on-apache/

1

Qualunque URL immesso come la pagina 404 predefinita deve essere assoluta o relativa dalla cartella radice: Ecco perché alcuni fanno l'errore di trattare il proprio URL come l'url dei motori di riscrittura che è relativo dalla cartella in cui .htaccess è trova.

4

Invece di aggiungerli al file .htaccess, è possibile aggiungerli a qualsiasi file di host virtuale.

<VirtualHost *:80> 

    DocumentRoot /var/www/mywebsite 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    ErrorDocument 404 /error-pages/404.html 
    ErrorDocument 500 /error-pages/500.html 
    ErrorDocument 503 /error-pages/503.html 
    ErrorDocument 504 /error-pages/504.html 

</VirtualHost> 

Dove error-pages è una sottocartella nella cartella mywebsite, contenente le pagine di errore personalizzate. Assicurati di riavviare l'apache per visualizzare le modifiche.

$sudo /etc/init.d/apache2 reload