404.php din tema WordPress nu este găsit, serverul folosește pagina de eroare implicită a Apache

26 mar. 2014, 14:22:20
Vizualizări: 13.8K
Voturi: 7

Dacă introduc ceva pentru a provoca o eroare 404 în instalarea mea WordPress, WordPress nu încarcă propriul fișier 404.php, ci se afișează mesajul de eroare implicit al serverului Apache.

Ce este în neregulă cu instalarea mea WordPress? Trebuie să modific fișierul de configurare al serverului Apache pentru a redirecționa către pagina 404.php din WordPress?

ACTUALIZARE:

Am reușit parțial să rezolv problema, am uitat să adaug directiva FileInfo în fișierul /etc/apache2/sites-available/default. Însă, nu toate solicitările sunt tratate corespunzător.

6
Comentarii

De cele mai multe ori WordPress poate face automat ceea ce îi ceri. Care este adresa unei pagini funcționale? Și adresa pe care o folosești care returnează eroarea 404 greșită? Este vorba despre un multisite?

s_ha_dum s_ha_dum
26 mar. 2014 14:47:50

Folosești pretty permalinks? Și ai verificat dacă mod_rewrite este activat și dacă regulile corecte sunt în fișierul tău .htaccess?

TheDeadMedic TheDeadMedic
26 mar. 2014 14:49:29

Instalarea mea se află la 192.168.1.8/wordpress/. Aceasta este pagina principală a site-ului meu. Accesez ceva de genul 192.168.1.8/wordpress/asdasdasd și apoi sunt redirecționat către pagina de eroare 404 a serverului Apache.

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

Am selectat stilul implicit de permalink, de exemplu: http://192.168.1.8/wordpress/?p=123

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

@TheDeadMedic Unde pot verifica mod_rewrite și .htaccess?

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

@user261562 : cu permalink-uri implicite nu ai nevoie de mod_rewrite sau .htaccess, dar asta este cam problema. Lasă-mă să verific și voi posta un răspuns.

s_ha_dum s_ha_dum
26 mar. 2014 14:53:20
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 2
9

Lucrurile funcționează așa cum ar trebui, și probabil singurul mod în care pot funcționa. Permiteți-mi să explic.

Fără un modul Apache numit mod_rewrite (sau componenta echivalentă în Nginx sau IIS), cererile către paginile PHP trebuie să meargă către un fișier real din sistemul de fișiere. Aceasta este ceea ce vedeți cu cereri precum 192.168.1.8/wordpress/?p=123. Fișierul accesat este fișierul "index" al directorului -- index.php. Acea cerere este echivalentul lui 192.168.1.8/wordpress/index.php?p=123. Ceea ce faceți este să solicitați un alt fișier/director cu cereri precum aceasta -- 192.168.1.8/wordpress/asdasdasd -- și niciun astfel de fișier sau director nu există în sistemul de fișiere.

Cu mod_rewrite și .htaccess configurate corect, toate cererile sunt trimise către index.php. Uitați-vă la fișierul standard WordPress .htaccess:

# 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

Acea RewriteRule direcționează totul (aproape totul) către index.php. Asta permite WordPress să proceseze orice cerere, chiar și cereri pentru fișiere care nu există fizic pe sistem.

Fără permalink-uri frumoase activate -- adică, cu permalink-urile "implicite" selectate -- WordPress nici măcar nu va încerca să analizeze cererile, ceea ce este echivalent cu a nu avea deloc mod_rewrite sau .htaccess.

Și, dacă WordPress nu poate analiza cererea, WordPress nu poate încărca 404.php-ul temei. Desigur, Apache încă știe că cererea este incorectă și încarcă propriul mesaj de eroare 404.

Deci, fără mod_rewrite, un fișier .htaccess corect și permalink-uri frumoase, obțineți comportamentul pe care îl descrieți, care este exact modul în care lucrurile ar trebui să funcționeze.

26 mar. 2014 15:07:40
Comentarii

Am activat mod_rewrite cu a2enmode rewrite și am creat fișierul .htaccess cu conținutul exemplu de pe pagina Wordpress>Using Permalinks, dar încă nu funcționează corect. Am observat că dacă solicit server/wordpress/index (fără .php) va redirecționa către pagina personalizată 404 Wordpress, dar nu dacă solicit ceva fără sens.

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

Apropo, fișierul .htaccess se află în folderul /var/www/wordpress/, este corect?

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

.htaccess ar trebui să fie în același director cu wp-load.php de obicei. Pare corect.

s_ha_dum s_ha_dum
26 mar. 2014 15:44:00

Ei bine, am rămas fără idei, ce ar putea fi problema, cred că a avea toate fișierele într-un subdirector al /var/www/ nu este o idee bună pentru a găzdui WordPress. Dar oricum mulțumesc, voi accepta răspunsul tău ca fiind cel mai bun, deoarece ai depus mult efort în acest sens și sper că viitorii utilizatori îl vor găsi util pentru a-și rezolva problema.

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

hmmm... ceva este ciudat cu configurația ta și nu știu ce.

s_ha_dum s_ha_dum
26 mar. 2014 15:58:30

Da, ceva este suspect, voi încerca o reinstalare curată.

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

Serverele au implicit directoare rădăcină diferite, dar nu ar trebui să existe niciun motiv pentru care nu poți rula WordPress dintr-un subdirector. Eu fac asta tot timpul.

s_ha_dum s_ha_dum
26 mar. 2014 16:00:02

"chiar și cereri pentru fișiere care nu există fizic pe sistem" - tehnic, regulile doar rescriu în acest caz, de aceea există RewriteCond-urile :)

TheDeadMedic TheDeadMedic
26 mar. 2014 16:00:55

@TheDeadMedic : da, observație bună.

s_ha_dum s_ha_dum
26 mar. 2014 16:05:07
Arată celelalte 4 comentarii
2

WordPress va gestiona erorile 404 doar dacă permalink-urile prietenoase sunt activate - accesați Setări > Permalinkuri și alegeți una dintre opțiunile diferite de cea implicită (sau folosiți-vă propria configurație).

26 mar. 2014 14:57:56
Comentarii

Am verificat 3 opțiuni (Zi și nume, Numeric și Nume post) și nu pare să aibă niciun efect, adică tot primesc mesajul de eroare 404 Apache și nu 404.php. Folosesc tema Twenty Thirteen, apropo.

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

Verifică răspunsul lui @s_ha_dum, va explica lucrurile mult mai bine!

TheDeadMedic TheDeadMedic
26 mar. 2014 15:09:05