Jak usunąć błąd 404 który pojawia się podczas przechodzenia na podstrony?

  • Poziom trudności:

Czasami przy stawianiu nowej strony na WordPressie albo przenoszeniu jej na nowy serwer pojawia się błąd 404 na wszystkich podstronach. Strona główna działa poprawnie i możemy się na początku nie zorientować, że wszystkie nasze wpisy i strony nie otwierają.

Pierwsza rzecz jaką zachęcam każdemu – nie panikować. Problem jest błahy i wystarczy kilka minut aby go rozwiązać.

Na początku proponuję żebyś zalogował się do panelu administracyjnego swojej strony. Teraz wejdź do:

Ustawienia -> Bezpośrednie odnośniki

Spróbuj ustawić domyślne linki i sprawdź czy Twoje podstrony się otwierają. Jeśli tak to problem dotyczy ładnych adresów URL (tzw. permalinków). Teraz ustaw na nowo opcję, którą miałeś wcześniej zaznaczoną (ja najczęściej wybieram „Nazwa wpisu” ale możesz wybrać taką ścieżkę jaka będzie Tobie najbardziej odpowiadać).

.htaccess

Pomogło? Jeśli nie to teraz wejdź przez klienta FTP na serwer i znajdź w głównym katalogu strony plik .htaccess. Standardowy plik wygląda mniej więcej tak:

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

# END WordPress

Zwróć uwagę na linię 4 i 8. Jeśli Twoja strona/blog znajdują się w katalogu i pełny adres to przykładowo www.twojeimieinazwisko.pl/blog/ to wtedy w kodzie pliku .htaccess powinien być ten katalog dopisany (jak to jest na powyższym przykładzie). Naturalnie jeśli strona znajduje się w innym katalogu, wystarczy że dokonasz edycji linii 4 i 8 – to powinno załatwić sprawę. Jeśli jednak Twoja strona nie jest umieszczona w katalogu albo Twoja domena prowadzi bezpośrednio do miejsca gdzie znajdują się standardowe katalogi i pliki WordPressa, wtedy konstrukcja podstawowa pliku .htaccess będzie wyglądać w sposób następujący:

# 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

Dokonaj korekty pamiętając o tym, aby zrobić wcześniej kopię zapasową.

UDOSTĘPNIJ