Błąd 404 WordPress – jak naprawić?

WordPress to potężny system CMS używany przez miliony stron internetowych na świecie. Jednak mimo iż ta duża platforma jest rozwijana przez bardzo duża społeczność, nie jest wolna od wad. Oczywiście nie koniecznie zawsze wada wynika z samego oprogramowania, a często problem leży po stronie oprogramowania maszyny hostującej. My dziś zajmiemy się dosyć popularnym błędem 404 wynikającym z nieprawidłowego przepisywania linków.

Błąd 404. Szybki wstęp

Problem z błędem 404 może mieć bardzo różne podłoża, dlatego umieściłem w tym wpisie parę potencjalnych rozwiązań:

  • Nieprawidłowe ustawienie bezpośrednich linków
  • Problem z plikiem .htaccess
  • Brak lub zdezaktywowany moduł rewrite
  • Brak zgody AllowOverride w apache2.conf

Rozwiązania uporządkowałem według zaawansowania – wiem, ze blog czytają głównej osoby początkujące. Postarałem się jednak na tyle wytłumaczyć dane rozwiązania, aby nawet osoba początkująca z minimalna wiedza na temat FTP czy SSH mogła rozwiązać sama dany problem.


Jeśli jednak nadal będziesz miał problem z występującym błędem lub nie będziesz wiedział, jak sprawdzić dany podpunkt to napisz do nas, a my chętnie ci pomożemy.

1. Błąd 404 WordPress. Nieprawidłowe ustawienie bezpośrednich linków.

Pierwszą rzeczą, którą należy sprawdzić to przy błędzie 404 WordPress to ustawienie bezpośrednich linków. W tym celu należy się zalogować do panelu administracyjnego WordPress, a następnie przejść do Ustawienia>Linki bezpośrednie. Mało kto wie, ale WordPress do identyfikacji postów/produktów dodaje swoje identyfikatory, dlatego sugerujemy zaznaczyć opcję Prosty i sprawdzić, czy udało się usunąć problem.

Jeśli problem udało się rozwiązać, sprawdź które ustawienie spowodowało problem i przywróć poprzednią konfigurację.

2.Błąd 404 WordPress. Problem z plikiem .htaccess

Błąd 404 WordPress może być spowodowany także złą konfiguracją lub brakiem pliku .htaccess. Plik .htaccess jest zazwyczaj ukryty i znajduje się w głownym folderze naszego WordPressa. Aby się do niego dostać musimy posiadać dostęp do FTP z włączoną opcją widoczności ukrytych plików, lub możemy zainstalować wtyczkę, która pozwoli nam edytować plik .htaccess (htacces File Editor).

Pierwszą sprawą jest sprawdzenie czy plik .htaccess istnieje – domyślnie WordPress powinien go tworzyć po odświeżeniu strony. Jeśli pliku nie ma, należy go utworzyć i uzupełnić go o poniższą konfigurację:

# 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>

Jeśli natomiast plik jest, należy sprawdzić jego zawartość i także w przypadku braku lub nieprawidłowej konfiguracji dodać powyższą na końcu pliku.

3. Wyłaczony moduł mod_rewrite

Jeśli poprzednie kroki nie spowodowały rozwiązania problemu, trzeba się pochylić nad rozwiązaniem trochę głębiej. Kolejnym problemem może być wyłączony moduł do przepisywania – mod_rewrite. Aby włączyć moduł będzie potrzebna bardziej specjalistyczna wiedza.

Przedstawię ci proces włączenia modułu mod_rewrite w Apache2 za pomocą SSH:

  • Zaloguj się do swojego serwera za pomocą SSH i włącz mod_rewrite wpisując: a2enmod rewrite
  • Po włączeniu modułu zrestartuj serwer Apache2 komendą – systemctl restart apache2

Następnie po zrestartowaniu serwera sprawdź, czy udało się rozwiązać problem. Powyższe rozwiązanie dotyczy oczywiście WordPressa postawionego na serwerze Apache2 – aktualnie najpopularniejszym rozwiązaniu. Innym rozwiązaniem jest na przykład postawienie WordPressa na serwerze Nginx.

4. Zła konfiguracja AllowOverride.

Ostatnim problemem, po którego stronie może stać błąd 404, jest zła konfiguracja, a raczej zezwolenie na przepisywanie adresów url. Ustawienie AllowOverride można zmienić w dwóch miejscach na naszym serwerze – w konfiguracji hosta wirtualnego oraz w pliku apache2.conf.

Zmiana ustawienia AllowOverride w wirtualnym hoście

Aby dojść do hostów wirtualnych, należy się zalogować do naszego serwera jak wyżej poprzez SSH, a następnie przejść do katalogu z wirtualnymi hostami:

cd /etc/apache2/sites-available

A następnie odszukać konfigurację hosta wirtualnego odpowiedzialnego za naszą stronę opartą na WordPress. Standardowo jest to plik default.conf:

sudo nano default.conf

Teraz odszukaj linijkę Allow Override i zmień ustawienie na „All” jeśli jest na „None”. Lub jeśli takiego ustawienia nie ma – dodaj:

<Directory twojaścieżka>
AllowOverride All
Require all granted
</Directory>

Po zmianie konfiguracji – przeładuj ustawienia i zrestartuj serwer:

sudo a2enmod rewritesudo 
service apache2 restart

Zmiana ustawień AllowOverride w apache2.conf

Ostatnią deską ratunku jest ustawienie Allow Override w pliku httpd.conf serwera Apache2. W tym celu przejdź do:

sudo nano /etc/apache2/apache2.conf

A następnie odszukaj linijkę Allow Override odnosząca się do twojego katalogu i sprawdź czy jest ustawione na „All”:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Po zmianie ustawień zrestartuj serwer:

sudo service apache2 restart

Jeśli mimo przejścia przez wszystkie kroki problem nadal istnieje, możesz się z nami skontaktować, a my ci pomożemy znaleźć przyczynę problemu.

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *