Il file 404.php del tema Wordpress non viene trovato, il server utilizza la pagina 404 predefinita di Apache

26 mar 2014, 14:22:20
Visualizzazioni: 13.8K
Voti: 7

Se digito qualcosa per provocare un errore 404 sulla mia installazione di Wordpress, Wordpress non carica il proprio file 404.php, ma viene visualizzato il messaggio di errore 404 predefinito del server Apache.

Cosa c'è che non va nella mia installazione di Wordpress? Devo modificare il file di configurazione del server Apache per reindirizzare alla pagina 404.php di Wordpress?

AGGIORNAMENTO:

Sono riuscito parzialmente a risolvere il problema, mi mancava la direttiva FileInfo nel file /etc/apache2/sites-available/default. Tuttavia, non tutti gli errori vengono gestiti correttamente.

6
Commenti

La maggior parte delle volte WordPress può fare ciò che chiedi automaticamente. Qual è l'indirizzo di una pagina funzionante? E l'indirizzo che stai usando che restituisce l'errore 404 sbagliato? Si tratta di un multisite?

s_ha_dum s_ha_dum
26 mar 2014 14:47:50

Stai utilizzando i pretty permalink? E hai verificato che mod_rewrite sia abilitato e che le regole corrette siano nel tuo file .htaccess?

TheDeadMedic TheDeadMedic
26 mar 2014 14:49:29

La mia installazione si trova su 192.168.1.8/wordpress/ Questa è la home page del mio sito. Se inserisco qualcosa come 192.168.1.8/wordpress/asdasdasd vengo reindirizzato alla pagina di errore 404 del server Apache.

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 14:49:49

Ho selezionato lo stile predefinito dei permalink, ad es. http://192.168.1.8/wordpress/?p=123

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 14:50:37

@TheDeadMedic Dove posso verificare mod_rewrite e .htaccess?

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 14:52:24

@user261562 : con i permalink predefiniti non ti serve mod_rewrite o .htaccess, ma questo è un po' il problema. Lascia che verifichi e posterò una risposta.

s_ha_dum s_ha_dum
26 mar 2014 14:53:20
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 2
9

Le cose funzionano come dovrebbero, e probabilmente nell'unico modo in cui possono funzionare. Lasciami spiegare.

Senza un modulo Apache chiamato mod_rewrite (o il componente equivalente per Nginx o IIS), le richieste alle pagine PHP devono puntare a un file effettivo nel filesystem. Questo è ciò che vedi con richieste come 192.168.1.8/wordpress/?p=123. Il file a cui si accede è il file "index" della directoryindex.php. Quella richiesta è equivalente a 192.168.1.8/wordpress/index.php?p=123. Ciò che stai facendo è richiedere un altro file o directory con richieste come questa— 192.168.1.8/wordpress/asdasdasd— e nessun file o directory di questo tipo esiste nel filesystem.

Con mod_rewrite e .htaccess configurati correttamente, tutte le richieste vengono inviate a index.php. Dai un'occhiata al file .htaccess standard di WordPress:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Quella RewriteRule indirizza tutto (o quasi tutto) a index.php. Questo permette a WordPress di elaborare qualsiasi richiesta, anche per file che non esistono fisicamente sul sistema.

Senza i permalink "carini" abilitati— cioè, con i permalink "predefiniti" selezionati— WordPress non tenterà nemmeno di analizzare le richieste, il che equivale a non avere affatto mod_rewrite o .htaccess.

E, se WordPress non può analizzare la richiesta, non può caricare il 404.php del tema. Apache, ovviamente, sa ancora che la richiesta non è valida e mostra il suo messaggio di errore 404.

Quindi, senza mod_rewrite, un file .htaccess corretto e i permalink carini, ottieni il comportamento che descrivi, che è esattamente come le cose dovrebbero funzionare.

26 mar 2014 15:07:40
Commenti

Ho abilitato mod_rewrite con a2enmode rewrite e creato il file .htaccess con il contenuto di esempio nella pagina Wordpress>Utilizzo dei permalink, ma ancora non funziona correttamente. Ho notato che se richiedo server/wordpress/index (senza .php) verrà reindirizzato alla pagina personalizzata di Wordpress 404 ma non se richiedo qualcosa di insensato.

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 15:32:45

A proposito, il file .htaccess si trova nella cartella /var/www/wordpress/, è corretto?

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 15:40:53

.htaccess dovrebbe trovarsi nella stessa directory di wp-load.php di solito. Sembra corretto.

s_ha_dum s_ha_dum
26 mar 2014 15:44:00

Beh, sono a corto di idee, cosa potrebbe causare questo problema, immagino che avere tutti i file nella sottocartella di /var/wwww/ non sia una buona idea per ospitare Wordpress. Ma grazie comunque, accetterò la tua risposta come la migliore, visto che hai messo tanto impegno in questo e spero che gli utenti futuri la trovino utile per risolvere il loro problema.

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 15:57:59

hmmm... c'è qualcosa di strano nel tuo setup e non so cosa sia.

s_ha_dum s_ha_dum
26 mar 2014 15:58:30

Sì, c'è qualcosa di sospetto, proverò una reinstallazione pulita.

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 15:59:38

I server predefiniti utilizzano directory root diverse, ma non c'è motivo per cui non puoi eseguire WordPress da una sottodirectory. Io lo faccio sempre.

s_ha_dum s_ha_dum
26 mar 2014 16:00:02

"anche le richieste di file che non esistono fisicamente sul sistema" - tecnicamente, le regole riscrivono solo in questo caso, da qui le RewriteCond :)

TheDeadMedic TheDeadMedic
26 mar 2014 16:00:55

@TheDeadMedic : sì, ottimo punto.

s_ha_dum s_ha_dum
26 mar 2014 16:05:07
Mostra i restanti 4 commenti
2

WordPress gestirà gli errori 404 solo se i permalink ottimizzati sono abilitati - vai su Impostazioni > Permalink e scegli una delle opzioni diverse da quella predefinita (o utilizza la tua personalizzata).

26 mar 2014 14:57:56
Commenti

Ho verificato 3 opzioni (Giorno e nome, Numerico e Nome del post) e questo non sembra avere effetto, cioè continuo a ricevere il messaggio di errore 404 di Apache invece del 404.php. Uso il tema Twenty Thirteen, tra l'altro.

Jaromír the Greenhorn Jaromír the Greenhorn
26 mar 2014 15:01:01

Dai un'occhiata alla risposta di @s_ha_dum, spiegherà le cose molto meglio!

TheDeadMedic TheDeadMedic
26 mar 2014 15:09:05