Chyby 500 a 404 způsobené permalinks

Chyba 500 ve většině případů znamená, že se něco pokazilo se souborem .htaccess. Tento problém jsme řešili v jednom z předchozích článků (500 Internal Server Error), kde jsme rozebrali také další možní příčiny stavového kódu 500. Například vyčerpání prostředků, které nám jsou přidělené serverem. Ve většině případů stačí soubor .htaccess znovu vygenerovat ve WordPress pomocí aktualizace trvalých odkazů. Tedy v administraci jděte do NastaveniTrvalé odkazy (v anglické verzi Settings > Permalinks). Zde zkontrolujte strukturu a klikněte na Uložit změny. V případě, že se vyskytne chyba například z důvodu problému se zápisem do souboru, musíte soubor .htaccess upravit ručně.

Řešil jsem nedávno podobný problém, kde však dělaly problém obrázky. Vracely chybu 404 – stránka nenalezena. WordPress je nemohl najít na klasické adrese:

domena.tld/wp-content/uploads/rok/mesic/

Trochu jsme se s tím potrápily, protože jsme předpokládali, že problém je někde v cestě k médiu a dá se nastavit z administrace. V případě, že je totiž cesta atypická, tak v NastaveniMédia, jí lze přepnout do klasického formátu. Nějak nám uniklo, že obrázky v příspěvcích neodkazují přímo na obrázek ale na stránku s obrázkem. Do toho se ještě zamotal super aktivní cachovací plugin, který nám dohledávání problému pěkně zkomplikoval. Nakonec za to mohla chyba v .htaccess do kterého si administrátor přidal svoje vlastní pravidla. Proto nám také nepomohlo jejich přepsání přes aktualizaci trvalých odkazů.

Ruční úprava .htaccess

Řešením bylo připojit se přes FTP a upravit vše ručně. Pokud nemáte zkušenosti s nahráváním a úpravou souborů přes FTP, tak bude ideální pokud si přečtete návod u vašeho poskytovatele webhostingu. Možná bude používat nějakého webového klienta jako net2ftp. Ideální je však Total Commander, kde se snadno dá změnit i oprávnění zápisu, což se může hodit v některých případech. Krátký návod jak na připojení FTP přes Total Commander najdete zde.

A jak vlastně má vypadat obsah souboru .htaccess?

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

Toto nastavení je přímo ze stránek vývojářů WordPress. Jedná se o základní řešení pro doménu a mělo by fungovat pro všechny instalace WordPress. Je třeba si dát pozor na různé instalátory, které poskytují hostingy. Ty mohou mít specifická nastavené kvůli kompatibilitě a zlepšení výkonu.

Někdy také budete muset sáhnout po manuální úpravě .htaccess i kvůli oprávnění. Většinou jsou na něm atributy oprávnění 644, což znamená, že uživatel má právo zápisu a čtení a ostatní jen čtení. Za normálních okolnosti je toto standardem, ačkoliv přímo tvůrci doporučují změnit pravidla na 604. V každém případě pokud by zápis zlobil, tak na dobu úpravy třeba pro generování pluginy, dělají to některé bezpečnostní a cachovací, můžete změnit oprávnění na 775. Po ukončení úprav to ale vraťte na 644.

Autor Ginoza

Pracuji na zákaznické podpoře jednoho známého webhostingu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *