{"id":2220,"date":"2026-02-24T08:52:00","date_gmt":"2026-02-24T07:52:00","guid":{"rendered":"https:\/\/jalvo.eu\/przekierowanie-301-czy-302-jak-wybrac-dla-seo\/"},"modified":"2026-09-25T03:46:36","modified_gmt":"2026-09-25T02:46:36","slug":"przekierowanie-301-czy-302-jak-wybrac-dla-seo","status":"publish","type":"post","link":"https:\/\/jalvo.eu\/pl\/przekierowanie-301-czy-302-jak-wybrac-dla-seo\/","title":{"rendered":"Przekierowanie 301 czy 302: kt\u00f3re wybra\u0107 dla SEO"},"content":{"rendered":"\n&#8222;`html\n\n\n\n<p class=\"wp-block-paragraph\">Przekierowanie 301 czy 302? W skr\u00f3cie: 301 stosujesz, gdy strona przenios\u0142a si\u0119 na sta\u0142e, a 302, gdy przenios\u0142a si\u0119 tylko na chwil\u0119 i stary adres ma zosta\u0107 w wynikach wyszukiwania. Zmieniasz struktur\u0119 adres\u00f3w albo przenosisz strony i boisz si\u0119, \u017ce wypadniesz z wynik\u00f3w? To w\u0142a\u015bnie wybrany kod statusu m\u00f3wi Google, kt\u00f3ry adres zachowa\u0107. Poni\u017cej: jak Google odczytuje ka\u017cdy z kod\u00f3w, kiedy kt\u00f3rego u\u017cy\u0107, jak ustawi\u0107 je w NGINX i Apache oraz jakie b\u0142\u0119dy sprawiaj\u0105, \u017ce w wynikach zostaje niew\u0142a\u015bciwy adres. Kod przekierowania to tylko jeden z sygna\u0142\u00f3w, kt\u00f3re wysy\u0142asz Google, bo o tym, jak traktowane s\u0105 same odno\u015bniki, decyduje <a href=\"https:\/\/jalvo.eu\/pl\/rel-sponsored-nofollow-ugc-jaki-atrybut-wybrac\/\">wyb\u00f3r atrybutu rel linku<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Czym r\u00f3\u017cni si\u0119 przekierowanie 301 od 302?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">301 oznacza, \u017ce strona przenios\u0142a si\u0119 na sta\u0142e. 302 oznacza, \u017ce przenios\u0142a si\u0119 tymczasowo. U\u017cytkownik niczego nie zauwa\u017cy, ale wyszukiwarka tak. Najpierw kr\u00f3tka definicja: <strong>kod statusu<\/strong> to trzycyfrowa liczba, kt\u00f3r\u0105 serwer odsy\u0142a z ka\u017cd\u0105 odpowiedzi\u0105, \u017ceby powiedzie\u0107, co sta\u0142o si\u0119 z \u017c\u0105daniem. Wed\u0142ug <a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/301-redirects\" rel=\"nofollow noopener\" target=\"_blank\">dokumentacji Google o przekierowaniach<\/a> zar\u00f3wno 301, jak i 308 oznaczaj\u0105, \u017ce strona na sta\u0142e przenios\u0142a si\u0119 pod nowy adres. <strong>Przekierowanie 308<\/strong> to wi\u0119c w praktyce sta\u0142y odpowiednik 301, a Google wymienia oba obok siebie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak Google traktuje przekierowanie sta\u0142e, a jak tymczasowe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Google \u015bledzi zar\u00f3wno stary, jak i nowy adres, a typ przekierowania (tymczasowe lub sta\u0142e) pomaga mu zdecydowa\u0107, kt\u00f3ry z nich zostanie kanoniczny. Adres kanoniczny to jedna wersja, kt\u00f3r\u0105 Google wybiera do indeksowania i wy\u015bwietlania spo\u015br\u00f3d grupy zduplikowanych lub bardzo podobnych stron. Je\u015bli u\u017cyjesz sta\u0142ego przekierowania po stronie serwera, proces indeksowania uzna adres docelowy za preferowany adres kanoniczny. A stary adres? Staje si\u0119 nazw\u0105 alternatywn\u0105 i nadal mo\u017ce pojawia\u0107 si\u0119 w wynikach, gdy zapytanie sugeruje, \u017ce szukaj\u0105cy bardziej ufa staremu adresowi. Przekierowanie tymczasowe to s\u0142abszy sygna\u0142. Adres \u017ar\u00f3d\u0142owy mo\u017ce wi\u0119c spokojnie utrzyma\u0107 swoje miejsce.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kiedy u\u017cywa\u0107 301, a kiedy 302<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wybierz <strong>przekierowanie sta\u0142e<\/strong>, gdy stary adres ju\u017c nigdy nie wr\u00f3ci. Typowe sytuacje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zmieniasz struktur\u0119 adres\u00f3w, na przyk\u0142ad przenosisz wpisy ze \u015bcie\u017cek z dat\u0105 na proste slugi.<\/li>\n<li>\u0141\u0105czysz dwie s\u0142abe strony w jeden mocniejszy poradnik.<\/li>\n<li>Wybierasz jeden preferowany host: z www lub bez, http lub https.<\/li>\n<li>Przenosisz ca\u0142\u0105 witryn\u0119 na now\u0105 domen\u0119.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Przekierowanie tymczasowe<\/strong> ma sens, gdy oryginalna strona ma wr\u00f3ci\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kr\u00f3tka strona kampanii zast\u0119puje na jaki\u015b czas stron\u0119 produktu.<\/li>\n<li>Testujesz A\/B stron\u0119 docelow\u0105.<\/li>\n<li>Strona jest chwilowo niedost\u0119pna i wr\u00f3ci pod ten sam adres.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Zasada Google jest na szcz\u0119\u015bcie prosta. Liczy si\u0119 to, jak d\u0142ugo przekierowanie ma dzia\u0142a\u0107 i kt\u00f3ry adres chcesz pokazywa\u0107 w wynikach wyszukiwania. Kupuj\u0105cy domeny staj\u0105 przed tym samym pytaniem (inny kontekst, ta sama logika), a ten przypadek opisujemy w poradniku o <a href=\"https:\/\/jalvo.eu\/hosting-expired-domains-without-losing-history\/\">przekierowaniach na wygas\u0142ych domenach<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak ustawi\u0107 301 lub 302 w NGINX i Apache<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W NGINX najczystszy spos\u00f3b na wys\u0142anie kt\u00f3regokolwiek kodu to dyrektywa <code>return<\/code> w bloku <code>location<\/code>. Dla pojedynczej strony <code>location = \/service { return 301 https:\/\/example.com\/about\/service; }<\/code> daje sta\u0142e przeniesienie. Wstaw <code>return 302<\/code> i masz przekierowanie tymczasowe. To wszystko. Przy przeniesieniach wed\u0142ug wzorca regu\u0142a <code>rewrite<\/code> zako\u0144czona flag\u0105 <code>permanent<\/code> zwraca 301, a flaga <code>redirect<\/code> zwraca 302. Sk\u0142adnia jest taka sama bez wzgl\u0119du na to, czy NGINX obs\u0142uguje stron\u0119 bezpo\u015brednio, czy masz <a href=\"https:\/\/jalvo.eu\/services\/\">proxy NGINX przed hostingiem<\/a> i trzymasz regu\u0142y przekierowa\u0144 na w\u0142asnym serwerze \u017ar\u00f3d\u0142owym.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apache daje dwie drogi. W mod_alias <code>Redirect permanent \"\/old\" \"https:\/\/example.com\/new\"<\/code> wysy\u0142a 301, a <code>Redirect temp<\/code> wysy\u0142a 302. W mod_rewrite flaga <code>[R=301]<\/code> oznacza przekierowanie sta\u0142e, a samo <code>[R]<\/code> tymczasowe (\u0142atwo o tym zapomnie\u0107 i to cz\u0119ste \u017ar\u00f3d\u0142o przypadkowych 302). Niezale\u017cnie od serwera Google zaleca, by przy zmianie adresu widocznego w wyszukiwarce w miar\u0119 mo\u017cliwo\u015bci stosowa\u0107 sta\u0142e przekierowanie po stronie serwera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">B\u0142\u0119dy w przekierowaniach, przez kt\u00f3re w wynikach zostaje z\u0142y adres<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wi\u0119kszo\u015b\u0107 problem\u00f3w z przekierowaniami sprowadza si\u0119 do sprzecznych sygna\u0142\u00f3w o tym, kt\u00f3ry adres jest ostateczny. Uwa\u017caj na te sytuacje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>302 zostawione przy sta\u0142ym przeniesieniu.<\/strong> Powiedzia\u0142e\u015b Google, \u017ce zmiana jest tymczasowa, wi\u0119c mo\u017ce dalej traktowa\u0107 stary adres jako kanoniczny. I trudno mu si\u0119 dziwi\u0107.<\/li>\n<li><strong>\u0141a\u0144cuch przekierowa\u0144.<\/strong> Po kilku zmianach struktury A prowadzi do B, a B do C. Zamiast tego kieruj ka\u017cdy stary adres prosto do ostatecznego celu.<\/li>\n<li><strong>Wszystko przekierowane na stron\u0119 g\u0142\u00f3wn\u0105.<\/strong> To p\u00f3j\u015bcie na skr\u00f3ty i wida\u0107 to od razu. Przypisz ka\u017cdej usuni\u0119tej stronie najbli\u017cszy odpowiednik, \u017ceby u\u017cytkownicy i roboty trafia\u0142y tam, gdzie to ma sens.<\/li>\n<li><strong>Nieaktualne linki wewn\u0119trzne i mapy witryny.<\/strong> Je\u015bli nawigacja i mapa XML wci\u0105\u017c podaj\u0105 stare adresy, przecz\u0105 Twoim w\u0142asnym przekierowaniom. Zaktualizuj je na nowe adresy.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Jeszcze jedno. Zmiana serwera to osobne zadanie ni\u017c zmiana adres\u00f3w, a w notatkach o <a href=\"https:\/\/jalvo.eu\/ip-migration-without-losing-rankings\/\">zmianie IP bez utraty pozycji<\/a> wyja\u015bniamy, jak przej\u015b\u0107 ten etap osobno.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak sprawdzi\u0107, jakie przekierowanie naprawd\u0119 zwraca serwer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Najszybszy spos\u00f3b: odpytaj stary adres z wiersza polece\u0144 i przeczytaj nag\u0142\u00f3wki odpowiedzi. Pliki konfiguracyjne mog\u0105 m\u00f3wi\u0107 jedno, a wtyczka, regu\u0142a CDN albo jaki\u015b zapomniany stary blok co\u015b zupe\u0142nie innego. Testuj wi\u0119c to, co faktycznie dzia\u0142a:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Uruchom <code>curl -I https:\/\/example.com\/old-page<\/code> i przeczytaj lini\u0119 statusu na g\u00f3rze wyniku.<\/li>\n<li>Sprawd\u017a, czy nag\u0142\u00f3wek <code>Location<\/code> wskazuje dok\u0142adnie ten cel, o kt\u00f3ry Ci chodzi\u0142o.<\/li>\n<li>Powt\u00f3rz to dla wersji http i https, z www i bez.<\/li>\n<li>Odpytaj te\u017c adres docelowy. Je\u015bli znowu przekierowuje, znalaz\u0142e\u015b \u0142a\u0144cuch do skr\u00f3cenia do jednego kroku.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Chcesz wiedzie\u0107, co Googlebot faktycznie dostawa\u0142 w d\u0142u\u017cszym okresie? Sprawd\u017a <a href=\"https:\/\/jalvo.eu\/reading-server-logs-crawl-problems\/\">kody statusu w logach dost\u0119pu<\/a>, a nie jeden jednorazowy test. Sama decyzja pozostaje jednak prosta: w ka\u017cdym dylemacie 301 czy 302 sta\u0142e przeniesienie dostaje 301 lub 308, a tymczasowe 302. Wi\u0119cej na ten temat znajdziesz w artyku\u0142ach o <a href=\"https:\/\/jalvo.eu\/category\/seo\/\">technicznym SEO na blogu<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1790304030536-0\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Czy przekierowanie 302 szkodzi SEO?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>u003cpu003eSamo w sobie nie. 302 sygnalizuje tymczasowe przeniesienie, wi\u0119c Google mo\u017ce zachowa\u0107 stary adres jako kanoniczny i dalej go wy\u015bwietla\u0107. Przy kr\u00f3tkiej kampanii lub te\u015bcie w\u0142a\u015bnie o to chodzi. Problem pojawia si\u0119 dopiero wtedy, gdy przeniesienie jest w rzeczywisto\u015bci sta\u0142e.u003c\/pu003e<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1790304030536-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Czy przekierowanie 308 jest lepsze ni\u017c 301?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>u003cpu003eGoogle traktuje oba jako sta\u0142e, wi\u0119c dla wyszukiwarki znacz\u0105 to samo. Praktyczna r\u00f3\u017cnica: 308 zachowuje oryginaln\u0105 metod\u0119 \u017c\u0105dania, co ma znaczenie przy wysy\u0142aniu formularzy i w API. Przy zwyk\u0142ym przenoszeniu stron 301 w zupe\u0142no\u015bci wystarczy.u003c\/pu003e<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1790304030536-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Jak d\u0142ugo utrzymywa\u0107 przekierowanie 301?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>u003cpu003eTak d\u0142ugo, jak stare linki, zak\u0142adki i wzmianki na innych stronach mog\u0105 jeszcze kierowa\u0107 ludzi pod dawny adres. Je\u015bli usuniesz je za wcze\u015bnie, te wizyty zako\u0144cz\u0105 si\u0119 b\u0142\u0119dem. Nie masz pewno\u015bci? Zostaw je. Jego utrzymanie praktycznie nic nie kosztuje.u003c\/pu003en&#8222;`<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>&#8222;`html Przekierowanie 301 czy 302? W skr\u00f3cie: 301 stosujesz, gdy strona przenios\u0142a si\u0119 na sta\u0142e, a 302, gdy przenios\u0142a si\u0119 [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":2194,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[182],"tags":[],"class_list":["post-2220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo-pl"],"acf":[],"_links":{"self":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts\/2220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/comments?post=2220"}],"version-history":[{"count":1,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts\/2220\/revisions"}],"predecessor-version":[{"id":2230,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts\/2220\/revisions\/2230"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/media\/2194"}],"wp:attachment":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/media?parent=2220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/categories?post=2220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/tags?post=2220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}