WordPress nie zapisuje permalinków przy Nginx – jak poprawić reguły?

Spis treści

Różnice między Apache a Nginx dla WordPress

Apache i Nginx to dwa najpopularniejsze serwery HTTP, ale działają na zupełnie innych zasadach. Podczas gdy Apache używa plików .htaccess do konfiguracji reguł rewrite na poziomie katalogu, Nginx wymaga centralnej konfiguracji w plikach .conf. To fundamentalna różnica, która powoduje problemy z permalinkami WordPress na serwerach Nginx.

Apache przetwarza plik .htaccess za każdym razem, gdy użytkownik odwiedza stronę, co pozwala na dynamiczną zmianę reguł bez restartu serwera. Nginx natomiast ładuje konfigurację raz przy starcie i nie obsługuje plików .htaccess. Dlatego gdy przenosisz WordPress z Apache na Nginx, permalinki przestają działać, chyba że ręcznie skonfigurujesz odpowiednie reguły rewrite.

Kluczowe różnice architektoniczne:

  • Apache: Modułowy, obsługuje .htaccess, łatwy w konfiguracji
  • Nginx: Wydajny, brak .htaccess, wymaga ręcznej konfiguracji
  • Wydajność: Nginx lepiej radzi sobie z wysokim ruchem
  • Konfiguracja: Apache bardziej przyjazny dla początkujących

Konfiguracja permalinków w WordPress

WordPress oferuje kilka predefiniowanych struktur permalinków, które można skonfigurować w panelu administracyjnym:

Dostępne opcje permalinków:

  • Prosty: example.com/?p=123
  • Dzień i nazwa: example.com/2025/09/24/przykladowy-wpis/
  • Miesiąc i nazwa: example.com/2025/09/przykladowy-wpis/
  • Numeryczny: example.com/archives/123
  • Nazwa posta: example.com/przykladowy-wpis/
  • Niestandardowa struktura: Możliwość definiowania własnych wzorców

Gdy zmieniasz strukturę permalinków w WordPress, system próbuje automatycznie zaktualizować plik .htaccess. Na serwerze Nginx ta operacja się nie powiedzie, ponieważ plik .htaccess nie jest obsługiwany. Konieczne jest ręczne dodanie odpowiednich reguł do konfiguracji Nginx.

Problemy z .htaccess na serwerze Nginx

Plik .htaccess to mechanizm specyficzny dla serwera Apache, który pozwala na override globalnej konfiguracji na poziomie katalogu. Na serwerze Nginx ten plik jest całkowicie ignorowany, co prowadzi do następujących problemów:

Główne problemy z .htaccess na Nginx:

  • Brak obsługi: Nginx nie czyta plików .htaccess
  • Błędy 404: Permalinki zwracają błędy "Strona nie znaleziona"
  • Konflikty: Wtyczki modyfikujące .htaccess nie działają
  • Bezpieczeństwo: Niektóre reguły bezpieczeństwa z .htaccess są ignorowane

Rozwiązaniem jest przeniesienie wszystkich niezbędnych reguł z .htaccess do głównej konfiguracji Nginx. W przypadku WordPress najważniejsze są reguły rewrite, które przekierowują żądania do pliku index.php.

Tworzenie reguł rewrite dla Nginx

Aby permalinki WordPress działały poprawnie na serwerze Nginx, konieczne jest dodanie odpowiednich reguł rewrite do konfiguracji. Oto podstawowa konfiguracja:

Podstawowe reguły rewrite dla WordPress:

Dodaj następujący blok do konfiguracji swojej witryny w pliku nginx.conf lub w pliku konfiguracyjnym domeny:

Jeśli interesuje Cię szersze spojrzenie na konfigurację serwerów web, polecam przeczytać artykuł: Konfiguracja .htaccess WordPress 2025, gdzie znajdziesz więcej szczegółów na temat optymalizacji serwera dla WordPress.

Konfiguracja location block dla WordPress:

W bloku server dodaj następującą konfigurację location:

  • Reguła try_files sprawdza najpierw istniejące pliki
  • Jeśli plik nie istnieje, przekierowuje do index.php
  • Parametr query_string zawiera oryginalną ścieżkę URL
  • Konfiguracja obsługuje zarówno strony, jak i wpisy

Ważne uwagi dotyczące konfiguracji:

  • Lokalizacja konfiguracji: Reguły muszą być w bloku server
  • Kolejność reguł: Ważna jest kolejność location blocks
  • Testowanie: Zawsze testuj konfigurację przed wdrożeniem
  • Backup: Twórz kopie zapasowe konfiguracji

Sprawdzenie konfiguracji nginx.conf

Przed wdrożeniem zmian w konfiguracji Nginx należy sprawdzić poprawność składni. Użyj następujących poleceń:

Walidacja konfiguracji Nginx:

  • Sprawdzenie składni: Użyj polecenia nginx -t do walidacji konfiguracji
  • Przeładowanie konfiguracji: Wykonaj systemctl reload nginx aby przeładować konfigurację
  • Restart serwera: Użyj systemctl restart nginx dla pełnego restartu serwera

Jeśli polecenie walidacji konfiguracji zwróci błąd, konfiguracja zawiera błędy składniowe i nie zostanie załadowana. Sprawdź logi błędów Nginx pod kątem szczegółowych informacji o problemach.

Typowe błędy konfiguracji:

  • Brak średnika: Każda dyrektywa musi kończyć się średnikiem
  • Niewłaściwe nawiasy: Sprawdź zagnieżdżenie bloków
  • Błędne ścieżki: Upewnij się, że ścieżki do plików są poprawne
  • Konflikty reguł: Sprawdź kolejność location blocks

Testowanie permalinków po zmianach

Po skonfigurowaniu reguł rewrite i przeładowaniu serwera Nginx, przetestuj działanie permalinków:

Metody testowania permalinków:

  • Utwórz testowy wpis: Sprawdź, czy URL działa poprawnie
  • Użyj narzędzia curl: Wykonaj curl -I z adresem URL testowego wpisu
  • Sprawdź kody odpowiedzi: Powinien być 200 OK, nie 404
  • Testuj różne typy treści: Strony, wpisy, kategorie, tagi

Jeśli permalinki nadal nie działają, sprawdź logi błędów Nginx. Błędy 404 mogą wynikać z nieprawidłowej konfiguracji reguł rewrite lub problemów z cache.

Problemy z cache i ich wpływ na permalinki

Cache na serwerze Nginx może powodować problemy z wyświetlaniem zmian w permalinkach. Rozważ następujące scenariusze:

Typowe problemy z cache:

  • Cache przeglądarki: Przechowuje stare wersje stron
  • Cache serwera: Nginx może cache'ować odpowiedzi
  • Cache wtyczek: Wtyczki cache WordPress mogą konfliktować
  • CDN cache: Usługi CDN przechowują kopie stron

Rozwiązania problemów z cache:

  • Czyszczenie cache przeglądarki: Ctrl+F5 lub Ctrl+Shift+R
  • Czyszczenie cache Nginx: Usuń pliki z katalogu cache
  • Wyłączanie wtyczek cache: Testuj z dezaktywowanymi wtyczkami
  • Purge CDN: Wyczyść cache w panelu CDN

Wpływ wtyczek na strukturę URL

Niektóre wtyczki WordPress mogą modyfikować strukturę URL lub dodawać własne reguły rewrite, które mogą konfliktować z konfiguracją Nginx:

Wtyczki wpływające na URL:

  • Wtyczki SEO: Modifikują canonical URLs i meta tagi
  • Wtyczki cache: Mogą cache'ować błędne wersje stron
  • Wtyczki bezpieczeństwa: Dodają reguły zabezpieczeń
  • Wtyczki e-commerce: Tworzą niestandardowe endpointy

Aby zidentyfikować problemy z wtyczkami, przetestuj permalinki z dezaktywowanymi wtyczkami. Jeśli permalinki zaczynają działać, problem leży w konflikcie z jedną z wtyczek.

Debugowanie błędów 404

Błędy 404 są najczęstszym problemem z permalinkami na serwerze Nginx. Oto jak je debugować:

Kroki debugowania błędów 404:

  1. Sprawdź logi Nginx: Przejrzyj plik error.log w katalogu /var/log/nginx/
  2. Weryfikuj konfigurację: Upewnij się, że reguły rewrite są poprawne
  3. Testuj bez cache: Wyłącz wszystkie mechanizmy cache
  4. Sprawdź uprawnienia: Upewnij się, że Nginx ma dostęp do plików
  5. Testuj różne URL: Sprawdź różne typy treści

Typowe przyczyny błędów 404:

  • Błędne reguły rewrite: Nieprawidłowa konfiguracja Nginx
  • Problemy z cache: Stare wersje stron w cache
  • Konflikty wtyczek: Wtyczki modyfikujące URL
  • Błędy w bazie danych: Uszkodzone wpisy rewrite_rules

Optymalizacja konfiguracji Nginx dla WordPress

Po rozwiązaniu problemów z permalinkami, warto zoptymalizować konfigurację Nginx dla lepszej wydajności WordPress:

Optymalizacje wydajnościowe:

  • Cache statyczne: Skonfiguruj cache dla plików statycznych
  • Gzip compression: Włącz kompresję treści
  • HTTP/2: Włącz protokół HTTP/2 dla szybszego ładowania
  • Limit requests: Zabezpiecz przed atakami DDoS

Zabezpieczenia Nginx dla WordPress:

  • Hide server version: Ukryj wersję serwera w nagłówkach
  • Security headers: Dodaj nagłówki bezpieczeństwa
  • Rate limiting: Ogranicz liczbę żądań
  • Block malicious requests: Zablokuj złośliwe żądania

Pamiętaj, że optymalizacja konfiguracji Nginx to proces ciągły. Regularnie monitoruj wydajność serwera i dostosowuj konfigurację do zmieniających się potrzeb.

Masz problemy z konfiguracją permalinków WordPress na serwerze Nginx? Chętnie pomożemy Ci zoptymalizować konfigurację serwera i rozwiązać problemy z URL. Skontaktuj się z nami, aby uzyskać profesjonalne wsparcie w konfiguracji Nginx dla WordPress.