Newsletter 365tipů můžete číst zdarma. Placené předplatné je dobrovolná podpora, která pomáhá webu pokračovat.
Podpořit 365tipů

TIP#2957: Co když WordPress náhle začne místo článků (všech, ne jen některých) vracet chybu 404?

Zvláštní věc, která se mi stala už tuším víckrát. Na FeedIT.cz naposledy před pár dny. Náhle místo článků začal web vracet 404ky. Nedošlo k žádné aktualizaci, žádné změny v pluginech, prostě nic. 

Překvapivě to mělo jednoduché řešení. Jít do Nastavení -> Trvalé odkazy a znovu to tam uložit. Jen uložit, nic neměnit.

Tohle okamžitě problém odstranilo. 

Je dobré vědět, že tohle má většinou původ ve špatně načtenými/nastavenými přepisovacími pravidly (rewrite rules) a jde o klasický .htacess soubor (Apache). 

Což je také dost dobrý důvod k tomu, abyste měli zálohu webu a případně dokázali vrátit zpět .htacess co je trochu starší. 

V .htaccess přitom je zpravidla následující pro výše uvedené nastavení, nutno dodat, netuším zda jiné varianty nastavení mají jiná pravidla. ):

# BEGIN WordPress
# Direktivy (řádky) mezi „BEGIN WordPress“ a „END WordPress“ jsou
# dynamicky generované a měly by být upravovány pouze pomocí filtrů WordPressu.
# Veškeré změny směrnic mezi těmito značkami budou přepsány.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#END WordPress

U té čerstvé záhady na FeedIT.cz přitom právě tahle část z .htacess ztratila. Ačkoliv k tomu nebyl reálně žádný jasně určitelný důvod. Osobně tipuju, že některý z pluginů (WordFence, například) sahal na .htacess při nějaké vlastní aktualizaci pravidel a poněkud se mu to nepovedlo.

A právě znovu-uložení nastavení (viz výše) tam tato pravidla doplní. Což obnáší i to, že zrovna tuhle část v .htacess byste skutečně neměli upravovat ručně.