Błąd HTTP 405 (Method Not Allowed) to jeden z bardziej zagadkowych komunikatów, które mogą pojawić się na stronie internetowej, powodując frustrację zarówno u użytkowników, jak i administratorów. W przeciwieństwie do częstszych błędów 404 czy 500, 405 pojawia się rzadziej, ale gdy już się pojawi, stanowi szczególne wyzwanie diagnostyczne. Istotą tego błędu jest konflikt między metodą żądania HTTP, którą wysyła klient (przeglądarka lub aplikacja), a metodami, które serwer jest skonfigurowany, aby akceptować dla danego zasobu.
Serwer rozpoznaje zasób, do którego kieruje się żądanie – innymi słowy, strona lub plik istnieje – jednak odrzuca je ze względu na niedozwoloną metodę HTTP. Chociaż błąd 405 należy do kategorii 4xx (błędy klienta), źródło problemu bardzo często leży po stronie serwera – w jego konfiguracji lub aplikacji.
Zrozumienie HTTP 405 – definicja i znaczenie błędu
Błąd HTTP 405 oznacza, że serwer odebrał i rozpoznał żądanie, ale wyraźnie zabrania stosowania konkretnej metody HTTP dla danego zasobu. Serwer zna żądany zasób (on istnieje), jednak nie pozwala na operację wykonaną wybraną metodą.
Zgodnie ze specyfikacją HTTP RFC 9110, gdy serwer zwraca odpowiedź 405, musi dołączyć nagłówek Allow z listą metod dozwolonych dla danego zasobu. To kluczowa wskazówka diagnostyczna, która pozwala szybko dobrać poprawną metodę. Na przykład odpowiedź z nagłówkiem Allow: GET, POST, HEAD oznacza, że można używać tylko tych metod. To rozróżnienie między istnieniem zasobu a dopuszczalnymi operacjami odróżnia błąd 405 od błędu 404.
Metody HTTP jako fundament komunikacji internetowej
HTTP to język komunikacji między klientem a serwerem. Aby uchwycić różnice między metodami i lepiej zrozumieć, skąd bierze się 405, zobacz najważniejsze metody i ich rolę:
- GET – pobieranie danych bez zmiany stanu zasobu; żądania GET są bezpieczne i idempotentne;
- POST – przesyłanie danych do serwera, zwykle tworzenie nowego zasobu lub przetwarzanie formularzy;
- PUT – pełna aktualizacja lub zastąpienie zasobu; metoda idempotentna;
- PATCH – częściowa aktualizacja zasobu; modyfikacja wybranych pól;
- DELETE – usunięcie zasobu; metoda idempotentna;
- OPTIONS – uzyskanie informacji o dozwolonych metodach; kluczowa w kontekście CORS;
- TRACE – diagnostyka ścieżki żądania; z powodów bezpieczeństwa zwykle wyłączana.
Przyczyny pojawienia się błędu 405
Najczęstsze źródła 405 wynikają z konfiguracji serwera, warstwy aplikacyjnej lub komponentów pośredniczących. Oto główne scenariusze, które warto sprawdzić w pierwszej kolejności:
- nieprawidłowa konfiguracja serwera web – błędne reguły w Apache (np.
<Limit>,mod_rewrite) lub Nginx (np.limit_except) ograniczają dozwolone metody w danym katalogu lub ścieżce; - konflikty wtyczek i motywów w WordPress – niepoprawne przechwytywanie żądań przez wtyczki, kolizje hooków, błędny routing lub uszkodzony
.htaccesspotrafią zablokować metody; - błędy w kodzie aplikacji/backendu – endpoint nie obsługuje metody, którą wysyła klient (np. formularz POST trafia do logiki przyjmującej tylko GET);
- zabezpieczenia i WAF – zbyt restrykcyjne reguły Web Application Firewall blokują PUT/DELETE lub nietypowe nagłówki, traktując je jako ryzykowne;
- błędy DNS i routing – niewłaściwe rekordy DNS lub routing kierują ruch na inny serwer/środowisko, gdzie metody są ograniczone;
- serwery proxy i load balancery – pośredniki zmieniają metodę żądania (np. PUT na GET) lub ją blokują w trakcie przepływu.
Proces diagnostyki błędu 405
Pracuj metodycznie – to skraca czas naprawy i eliminuje błędne tropy. Oto sprawdzony schemat postępowania krok po kroku:
- Odtwórz błąd i zbierz kontekst – ustal, gdzie i kiedy występuje (konkretna podstrona, wysyłka formularza, wywołania API, zależność od zalogowania, określonych ról, przeglądarki, itp.).
- Sprawdź nagłówek Allow w odpowiedzi – w narzędziach deweloperskich przeglądarki (F12 → Network) odczytaj listę dozwolonych metod.
- Przetestuj różne metody narzędziami CLI – cURL/HTTPie pozwalają szybko zawęzić problem. Przykład żądania POST z nagłówkami w odpowiedzi:
curl -i -X POST https://example.com/path
- Przeanalizuj logi serwera – poszukaj wpisów o odrzuceniu metod i kontekstu reguł: ścieżki do logów dla Apache:
/var/log/apache2/,/var/log/httpd/; dla Nginx:/var/log/nginx/. - Zweryfikuj ostatnie zmiany – aktualizacje wtyczek/motywów, wdrożenia, modyfikacje konfiguracji serwera, nowe reguły bezpieczeństwa.
Rozwiązania dla serwerów Apache
Apache używa m.in. plików .htaccess do sterowania zachowaniem w katalogach. Częstą przyczyną 405 są błędnie ustawione dyrektywy <Limit> lub <LimitExcept>. Przykład konfiguracji dopuszczającej wyłącznie GET/POST:
<Limit GET POST>
Order Allow,Deny
Allow from all
</Limit>
Aby dopuścić więcej metod, użyj <LimitExcept> z pełną listą dozwolonych metod:
<LimitExcept GET POST PUT DELETE OPTIONS PATCH>
Deny from all
</LimitExcept>
W nowszych wersjach Apache preferowany jest moduł mod_allowmethods i dyrektywa AllowMethods w kontekście <Location>:
<Location "/">
AllowMethods GET POST OPTIONS
</Location>
Błędy potrafią wynikać też z reguł mod_rewrite wymuszających 405. Przykład problematycznej reguły:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/users/create/?.*$
RewriteCond %{REQUEST_METHOD} =GET
RewriteRule ^(.*)$ https://example.com/users/new$1 [R=405,L]
Znajdź i usuń lub skomentuj wadliwe reguły, następnie wykonaj kopię zapasową i przeładuj konfigurację.
Rozwiązania dla serwerów Nginx
Nginx centralizuje konfigurację w nginx.conf oraz plikach w sites-available/sites-enabled. Ograniczenia metod wdraża się zwykle przez limit_except w bloku location. Przykład, który dopuszcza tylko GET/POST:
location /api/ {
limit_except GET POST {
deny all;
}
}
Aby dopuścić pełny zestaw metod w danym API, rozszerz regułę:
location /api/ {
limit_except GET POST PUT DELETE OPTIONS PATCH {
deny all;
}
}
405 może też wynikać z warunkowego return 405 dla określonych metod. Przykład:
location /specific-page {
if ($request_method = POST) {
return 405;
}
}
Po zmianach sprawdź składnię konfiguracji:
sudo nginx -t
Jeśli test przeszedł poprawnie, przeładuj serwer:
sudo systemctl reload nginx
Rozwiązania dla serwerów IIS
Najczęstszą przyczyną 405 w Microsoft IIS jest konflikt z modułem WebDAV. WebDAV bywa domyślnie włączony i blokuje PUT/DELETE używane przez aplikacje.
Aby wyłączyć WebDAV w web.config, usuń moduł i handler:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
Dozwolone metody można też konfigurować w sekcji handlerów. Przykładowy wpis:
<system.webServer>
<handlers>
<add name="PUTHandler" path="*" verb="PUT" type="System.Web.HttpForbiddenHandler" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
Sprawdź uprawnienia plików/katalogów (np. dla konta IIS_IUSRS), a w IIS Manager zweryfikuj mapowania handlerów i dozwolone metody.
Rozwiązania specyficzne dla WordPress
WordPress posiada własny routing, na który wpływają wtyczki, motywy i ustawienia permalinków. Aby szybko zidentyfikować przyczynę błędu 405, wykonaj kolejno:
- Tymczasowo wyłącz wszystkie wtyczki – np. przez zmianę nazwy katalogu
/wp-content/pluginsna/wp-content/plugins-disabled; jeśli problem ustąpi, przywróć nazwę i włączaj wtyczki pojedynczo, by znaleźć winowajcę. - Przełącz motyw na domyślny – np. Twenty Twenty-Three (Appearance → Themes), by wykluczyć błędy szablonu.
- Zresetuj linki bezpośrednie – Settings → Permalinks → Save Changes, aby zregenerować reguły
.htaccess. - Sprawdź ręcznie plik
.htaccess– w razie uszkodzenia usuń go i zapisz ponownie permalinki. - Przejrzyj bazę danych (opcjonalnie, zaawansowane) – sprawdź niestandardowe reguły wpływające na routing.
- Przywróć witrynę z kopii zapasowej – jeśli błąd pojawił się po ostatnich zmianach i utrudnia działanie.
Domyślny .htaccess WordPress powinien wyglądać następująco:
# BEGIN WordPress
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]
# END WordPress
Interfejsy API i protokół REST
Błędy 405 są częste w kontekście REST, gdzie metoda definiuje operację na zasobie. Typowy wzorzec: GET – pobieranie, POST – tworzenie, PUT/PATCH – aktualizacja, DELETE – usuwanie. Przykładowo /api/users zwykle obsługuje GET (lista) i POST (tworzenie), a /api/users/123 – GET, PUT, DELETE.
Do typowych przyczyn 405 w API należą: błędy dokumentacji, niepełna implementacja endpointu oraz nieprawidłowa konfiguracja CORS (np. brak metody w Access-Control-Allow-Methods). Aby szybko sprawdzić dozwolone metody, wyślij żądanie OPTIONS:
curl -X OPTIONS https://api.example.com/users -i
W odpowiedzi oczekuj nagłówka Allow lub Access-Control-Allow-Methods z listą obsługiwanych metod.
Wpływ błędu 405 na pozycjonowanie i SEO
405 może negatywnie oddziaływać na widoczność w wyszukiwarkach, zwłaszcza gdy dotyczy ważnych sekcji serwisu. Najważniejsze konsekwencje to:
- ograniczenie crawl budget – Googlebot może przeskanować mniej podstron, co spowalnia indeksację nowych treści;
- pogorszenie UX – rośnie współczynnik odrzuceń i spada zaangażowanie, co pośrednio wpływa na ranking;
- osłabienie interlinkowania – linki kierujące do zasobów zwracających 405 nie przekazują autorytetu.
Monitoruj regularnie błędy w Google Search Console (Coverage), a także w narzędziach typu Screaming Frog czy Semrush.
Zapobieganie błędom 405 – najlepsze praktyki
Wdrożenie poniższych zasad znacząco ogranicza ryzyko wystąpienia 405 i upraszcza diagnostykę:
- Jasna dokumentacja API – każdy endpoint powinien mieć listę obsługiwanych metod, formatów oraz przykłady zapytań/odpowiedzi;
- Konsekwentny REST – mapuj operacje na właściwe metody: GET, POST, PUT/PATCH, DELETE;
- Testy przed wdrożeniem – sprawdzaj wszystkie metody i przypadki brzegowe, w tym odpowiedzi 405 z nagłówkiem Allow;
- Rozsądna konfiguracja serwera – unikaj nadmiernie restrykcyjnych reguł metod bez uzasadnienia; regularnie audytuj ustawienia;
- Poprawny CORS – upewnij się, że
Access-Control-Allow-Methodsobejmuje wszystkie metody wspierane przez API; - Przyjazne komunikaty błędów – dla 405 zwracaj nagłówek Allow i zwięzłe wyjaśnienie ze wskazaniem właściwej metody;
- Monitoring logów i metryk – nagłe skoki 405 sygnalizują kłopoty z konfiguracją lub regresję w aplikacji.