3 sposoby na przekierowanie 301

3 sposoby na przekierowanie 301

Przekierowanie 301 jest najbardziej skutecznym i przyjazną dla wyszukiwarek metodą przekierowania. Jeżeli przeniosłeś artykuł do nowego działu, lub przeniosłeś stronę na inną domenę przekierowanie 301 informuje przeglądarki, że strona została bezpowrotnie przeniesiona gdzie indziej.

Istnieją także przekierowania 302, które informują przeglądarki o tymczasowym przeniesieniu, ten rodzaj przekierowania możemy stosować np. podczas prac moderacyjnych serwisu.

Dziś jednak zajmiemy się tym pierwszym, a poniżej podaję kilka prostych do wdrożenia metod na przekierowanie strony na inny adres:

1. Najczęściej stosowane przekierowanie korzystające z funkcji serwera – .htaccess

Tworzymy w katalogu głównym na naszym serwerze (najczęściej katalog public_html) plik o nazwie .htacces

W systemie operacyjnym Windows  nie ma możliwości tworzenia plików, których nazwa rozpoczyna się od kropki, dlatego można przekopiować na serwer dowolny plik tekstowy i tam edytować jego nazwę na .htaccess. Następnie należy edytować plik dodając do niego linijki:

  • Przekierowanie na nową domenę

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

  • Przekierowanie pojedynczej strony (podajemy ścieżkę względną):

Redirect 301 /prezentacja.php /index.php/e-biznes/

Powyższy kod wklejony do pliku .htaccess przekieruje każdego kto odwiedzi stronę http://twoja-domena.pl/prezentacja.php na nową stronę http://twoja-domena/index.php/e-biznes/

Można w taki sam sposób dokonać przekierowania pojedynczej strony na inną domenę:

Redirect 301 / http://inna-twoja-domena.pl/

Powyższy kod oznacza przekierowanie ze strony głównej na inną domenę.

  • Przekierowanie Canonical, czyli z adresu z www, na adres bez www lub odwrotnie. Zawsze powinno się stosować adresy z albo bez www, nigdy oba na raz.

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domena.pl [nc]
rewriterule ^(.*)$ http://www.domena.pl/$1 [r=301,nc]

Ten kod przekieruje odwiedzających, którzy wpisali adres http://domena.pl na adres http://www.domena.pl/

Jeśli chcemy odwrotnego przekierowanie to sytuacja jest analogiczna.

2. Przekierowanie za pomocą skryptów

Najlepiej używać przekierowań za pomocą serwera i pliku .htaccess, lecz jeśli te nie działają z jakiś powodów można skorzystać z przekierowań za pomocą skryptów.

  • Pierwsza zdecydowanie nie polecana możliwość to przekierowanie w znaczniku meta:

<META HTTP-EQUIV=Refresh CONTENT=”0; URL=http://www.domena.pl”>

  • Przekierowanie za pomocą Java Script (wklejamy w znaczniku <body>) – również nie polecam

<body onLoad="setTimeout(location.href='http://domena.pl', '0')" >

możesz też poniższy kod wkleić pod znacznikiem <body>

<script type=”text/javascript”>
<!–
window.location = „http://www.domena.pl/”
//–>
</script>

  • Przekierowanie za pomocą kodu PHP

Przekierowanie na nową domenę – wklej na początku pliku:

<?php
Header( „HTTP/1.1 301 Moved Permanently” );
Header( „Location: http://www.domena.pl/” );
?>

Przekierowanie Canonical (adres bez www, na adres z www)

<?php
if (substr($_SERVER['HTTP_HOST'],0,3) != 'www') {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.'.$_SERVER['HTTP_HOST']
.$_SERVER['REQUEST_URI']);
}
?>

  • przekierowanie 301 w ASP

<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”,”http://domena.pl/”
%>

  • 301 za pomocą CGI

$q = new CGI;
print $q->redirect(“http://www.domena.pl/“);

  • 301 z Ruby on Rails

def old_action
headers[„Status”] = “301 Moved Permanently”
redirect_to “http://www.domena.pl/”
end

3. Przekierowanie za pomocą wtyczek

W celu przekierowania strony można użyć również wtyczek, poniżej podaję kilka plugin do wordpressa i we wszystkich wpisach skupiał się będę jedynie na tym cmsie, gdyż jest obecnie najbardziej popularny i prawdopodobnie najprostszy w obsłudze.

  • simple 301 redirect pozwala na przekierowanie każdej podstrona osobno, co widać na poniższym obrazku:

Myślę, że już nikt nie będzie miał problemów ze zrobieniem przekierowania, w razie kłopotów czekam na komentarze.

COMMENTS (39)

  1. Dzięki za artykuł. Udało mi się wreszcie ogarnąć przekierowania :)

  2. witaj Przemku
    Jak skutecznie zablokowac reklame w javascript wyswietlajaca sie na www na dwrmowych serwerach. Jest to kod js umieszczony przed .
    Chce kodem js ja zablokowac by sie nie wyswietlala sie a kodow php nie przyjmuja na serwer.
    Prosze o rade dziekuje.

  3. witam,

    zmieniłem oprogramowanie sklepu na wordpress, pozmieniały mi się url’e jak spisać plik .htaccess aby zniknęły błędy 404 ?
    pozdrawiam

    1. To zależy, jeśli chcesz pozmieniać wszystkie stare URLe na nowe możesz użyć formuły
      Redirect 301 domena.pl/stary-adres1 domena.pl/nowy-adres1
      itd.
      Ewentualnie jeśli chcesz wyeliminować całkowicie błąd 404 bez konieczności przekierowań ze starych adresów na nowe możesz posłużyć się wtyczką wordpress „404 to 301”. Wtyczka przekierują wszystkie strony błędu 404 na dowolny podany przez Ciebie adres.

  4. zazwyczaj uzywam do tego wtyczek, ale akurat mam stronę statycznę i jakiejkolwiek zmiany nie wprowadzę mam błąd 500.

    mam następującą strukturę adresów URL
    domena.pl/index.php?tresc=jakas-tresc
    domena.pl/index.php?tresc=stara-tresc
    domena.pl/index.php?tresc=nowa-tresc

    i chciałbym wszystkie te adresy przekierować metodą 1 do 1 na nową domenę oraz druga wersja to zlapac je wszystkie i przekierowac na domene2.pl

    podasz mi przykłady w htaccessie takich rozwiązań? Na przykładach powinienem sobie poradzić.
    pozdrawiam

  5. Witaj Przemku. Nie znam sie na plikach htacces ale mam dostep do indexu php i jego edycji. Korzystam z totalcmd. Moj index php wyglada tak

    <?php
    require_once("../res/x5engine.php");
    require_once("checkaccess.php");
    if ($logged)
    {
    require_once("../res/x5settings.php");
    if (isset($imSettings['blog']) && $imSettings['blog'] != FALSE)
    {
    header("Location: blog.php");
    exit;
    } else if (isset($imSettings['guestbooks']) && count($imSettings['guestbooks'])) {
    header("Location: guestbook.php");
    exit;
    } else {
    header("Location: website_test.php");
    }
    }

    // End of file index.php

    Pytanie dotyczy tego czy w tym indexie dodac na samym poczatku skrypt przekierowania do nowej domeny czy tylko ten skrypt przekierowania powinien sie znajdowac w indexie php? I czy ewentualnie po przeniesieniu mozna bedzie wrocic do poprzedniej wersji? To znaczy czy bedzie mozna spowrotem w razie czego powrocic do przekierowania na stara domene z nowej domeny? To moje pierwsze przekierowanie wiec napisz czy wowczas po przekierowaniu obie witryny beda sie wyswietlac poprawnie czy chodzi tylko o to ze ten skrypt przekieruje wszystkie linki starej witryny ktora byla pozycjonowana przez dluzszy czas na nowa? Z gory dziekuje za odpowiedz.

    1. Dodając kod w index.php przekierujesz wszystkich którzy odwiedzą stronę index.php (najczęściej strona główna), jeśli chcesz przekierować z całej domeny musisz dodać kod przekierowania do wszystkich podstron (jeśli posiadasz będzie to plik header.php) lub skorzystać z .htaccess
      Po przekierowaniu będzie widoczna ta druga domena (ta na którą przekierujesz domene nr1).
      Jeśli przekierujesz tylko stronę index.php wtedy przekierujesz też wszystkie linki które linkowały do index.php – najlepiej przekierować też wszystkie podstrony serwisu.
      Oczywiście jest możliwość przywrócenia wprowadzonych zmian (jeśli robisz to pierszy raz najlepiej zrobić sobie kopie zapasową wszystkich plików z serwera).

      1. Wkleilam ten skrypt w indexie na poczatku ale nic sie nie dzieje. wchodzac na strone glowna mojej strony ona jest widoczna zadne przekierowanie sie nie odbywa. Plik header tez posiadam. Co powinnam dalej zrobic? Dodam ze edytowalam index.php z poziomu totalcmd czy dobrze to zrobilam?

        1. A nie masz czegoś wcześniej w kodzie strony, co się wypluwa z kodem 200, a następnie leci header 301?

  6. Witam, posiadam stronę na darmowej subdomenie np. http://www.mojastrona.republika.pl ale niestety nie działają tu typowe przekierowania w pliku .htaccess. Potrzebuję przekierować stronę na z www. Próbowałem z wstawieniem przekierowania w znaczniku meta, ale chyba zapętliło stronę bo non-stop się wgrywała. Może ktoś ma inny pomysł ?

  7. A jakiego przekierowania z bez www na z www użyć w przypadku braku możliwości użycia pliku .httacess ? Czy użyć meta znacznika, czy może lepiej java skryptu ? Niestety mam taką stronkę w html-u i na darmowej subdomenie.

    1. javascript jest czytany tylko po stronie klienta (czyli Google tego przekierowania nie zobaczy), z punktu widzenia SEO lepiej użyć przekierowania w znaczniku meta.

  8. Najlepsze co w sieci znalazłem!

    Dzięki

    1. a jak w przypadku kiedy domena1.pl i domena2.pl wskazują ten sam zasób a chciałbym przekierować tylko domena1.pl na inną domena3.pl ?- w rezultacie tylko jedna z dwóch ma zostać przekierowana, druga wskazywac, co wskazywała…

      1. nie wiem czy pytasz o to jak to zrobić, czy o coś innego?
        w .htaccess na domena1 wpisujesz

        redirect 301 / http://domena3.pl

        resztę pozostawiasz bez zmian.

  9. Witam,

    Może ktoś mi pomóc jak zrobić przekierowanie z www. mkintegra.pl na zeronudy.com/ ?

  10. Witam,
    Przemku powiedz jeśli możesz jak wykonać przekierowanie z linku: stara-strona. eu/kategoria/produkt.html na stronę: nowa-strona. pl/kategoria/61-produkt.html

    kombinowałem już kilkadziesiąt razy ale nic nie mogę wykombinować. Wiem pewnie powiesz nie trza kombinować tylko wiedzieć ale do tego mi jeszcze troszkę brakuje.

    proszę o pomoc

    Pozdrawiam
    Mirek

    1. hmm jeśli próbowałeś tyle razy to zakładam, że próbowałeś też poniższej kombinacji:
      Redirect 301 /kategoria/produkt.html http://www.nowa-strona.pl/kategoria/61-produkt.html
      i ona powinna działać.

  11. Świetny tutorial! Właśnie przeniosłem bloga z katalogu głównego do podkatalogu, bo domena była mi potrzebna do innego celu, a nie chciałem całkiem rezygnować z bloga. Przekierowania pomogły. Dzięki

  12. Dzięki za info.
    Tak się tylko zastanawiam jak jest różnica pomiędzy rewrite a redirect ?

  13. Czy po edycji htaccess, żeby zmiany weszły w życie, trzeba czekać na przecrawlowanie strony przez bota?

    1. @robert
      Nie. .htaccess jest po stronie serwera, a nie robota.

  14. a jak zrobic przekierowanie z aktualnej strony na inna strone. ale zeby zostal w pasku nadal ten sam adres. ?

  15. Witam,

    Mam problem z przyjaznymi linkami. W pliku .htacces mam:

    RewriteRule ^kontakt$ #contact?masked [L]
    RewriteCond %{QUERY_STRING} !^masked$
    RewriteRule ^#contact$ /kontakt [R=301,L]

    jednak nie ten kod nie działa:(
    Czy mogłabym prosić o pomoc?

    Czy rodzaj serwera może mieć wpływ na pozycjonowanie mojej strony w Google?

    pozdrawiam

  16. @eMeL

    na forum http://www.forum.optymalizacja.com/ jest dobry wątek o przekierowaniu 301

  17. Witam, mam poważny problem – posiadam kilka domen i chcę je przekierować na domenę główna. Gdy strona była w kreatorze Home, wszystko działało. Teraz strona jest w WordPressie i żadne polecenie nie pomaga. W pliku htaccess jest zapis:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

  18. można przekierować z nieistniejącej na istniejącą i przekierowanie które podałeś jak najbardziej jest ok.

  19. Dzięki za odpowiedź. Co do przyjaznych urli to wiem, nie wiem tylko, czy będzie działać przekierowanie z nieistniejącej podstrony z końcówką .html, na nową, z przyjaznym urlem. Czyli mogę dla przykładu przekierować: domena.pl/strona-glowna/podstrona1.html na domena.pl/podstrona1/ ?

    Dzięki :-).

  20. Tomek
    jeśli robisz przekierowanie ze starych adresów na nowe nie ma żadnego znaczenia jaką końcówkę czy jaką strukturę mają nowe adresy.
    Zatem możesz dodać w wordpressie końcówkę .htm czy nawet nie dodawać żadnej końcówki.
    Przy okazji jeśli chcesz, aby Twoje adresy na WP miały końcówkę .htm, zamiast zmieniać coś w pliku .htaccess należy wejść do ustawień wordpress (twojadomena.pl/wp-admin/options-permalink.php) i tam w polu własny format ustawić /%postname%.htm

  21. Witaj,

    mam pytanie odnośnie ostatniego komentarza. jak wygląda sytuacja w przypadku przekierowania z podstrony niestniejącej, gdzie adres wygląda w ten sposób: domena. pl/strona-glowna/podstrona1.html na nowy adres, istniejący: domena.pl/podstrona1/ – chodzi o to, że przerobiłem starą stronę na wordpressa i użyłem przyjaznych urli, czy do każdego przyjaznego urla w htaccesie należy dodać końcówkę .htm ? a co w przypadku, kiedy stare adresy mają końcówkę .html, tak jak powyżej ?

    Z góry dziękuję za pomoc !

  22. Prawidłowe przekierowanie z jednej podstrony na drugą podstronę za pomocą .htaccess powinno brzmieć:

    RewriteRule ^stara-podstrona.htm$ /nowa-podstrona.htm [R=301,L]

    wklejamy do pliku .htaccess, zapisujemy i działa.

    A wszystkim cwaniakom webmasterom i Ci, którzy nie chcą dzielić się wiedzą mówię: ban wam na drogę …

  23. Tak naprawdę nikt z was nie napisał jak to poprawnie zrobić przekierowanie w .htaccess z jednej pod strony na druga podstronę, dodam, że strona jest w html… nikt, dosłownie nikt. Webmasterzy nie chętnie dzielą się wiedzą, dosłownie chamstwo i nic więcej, nie będe używał wulgaryzmów bo nie wolno, ale brak mi słów aby to opisać. Szukam od 2 godz. prostego kodu na przekierowanie, no nikt, ku…. nikt nie napisał, piszecie jakieś skróty, chamy i nic więcej,a żeby tak wsze strony google zbanowało ….

  24. Czy wie Pan może jak mogę przekierować starą stronę na podstronę nowej strony strony w pliku htaccess?

    Pozdrawiam

  25. a jak zrobić przekierowanie poszczególnych podstron na nowe podstrony?

  26. fotograf:
    Metoda przez meta jest niepolecana ponieważ zanim strona zostanie przekierowana cały dokument musi zostać wczytany, natomiast przy przekierowaniu przez .htaccess przekierowanie następuje przed wczytaniem dokumentu.
    w .htaccessie powinno zadziałać:
    Redirect 301 /gigapano/galeria.html /katalog_pl.html

    ew. można na początku dodać kod .php.

  27. Mam problem, chciałbym przekierować stronę:
    gigapano.net/gigapano/galeria.html na
    gigapano.net/katalog_pl.html . Próbowałem za pomocą pliku .htaccess na różne sposoby, ale nie działa. Bez problemu działa znacznik META, ale dlaczego jego użycie jest „zdecydowanie niepolecane” ? Czy dla google znaczy on tyle samo co Redirect 301 ?

  28. Witaj,
    Nie mam żadnej strony na blox.pl dlatego nie wiem na ile można ingerować w stronę. Czy masz dostęp do konta ftp ?
    Jeśli masz to wystarczy tam w pliku .htaccess (jeśli takiego pliku nie ma, należy go stworzyć) wkleić kod:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

    Jeśli nie masz bezpośrednio dostępu do serwera, a możesz edytować (fizycznie) pliki znajdujące się na serwerze blox.pl – w pliku index.php, lub jeszcze lepiej w pliku header.php na samym początku wklej:
    < ?php Header( "HTTP/1.1 301 Moved Permanently" ); Header( "Location: AdresDomenyNaKtoraChceszPrzekierowacStrone" ); ?>

    Napisałem, aby kod wkleić do pliku header.php, ale generalnie chodzi o wklejenie tego kodu w takim miejscu, aby po wejściu na którąkolwiek podstronę zostać przekierowanym.

    Powiedz coś więcej o skrypcie z jakiego korzystasz na blox.pl, oraz o dostępach. Dokąd możesz się dostać i co możesz zmieniać, wtedy będę mógł precyzyjniej odpowiedzieć na Twoje pytanie :)

  29. Witam,
    znalazłam na Pana stronie instrukcję na temat przekierowań 301 – bardzo proszę o pomoc, bo nie wszystko jest zrozumiałe.
    Chcę to zrobić za pomocą kodu php, bo nie ma chyba lepszej możliwości.
    Stary blog jest na blox.pl a tam nie ma możliwości wykonania standardowego przekierowania…
    Proszę mi dokładnie podpowiedzieć jak to zrobić technicznie? Kod php podany na Pana stronie mam wkleić do pliku index.php a następnie przesłać go na serwer od nowej domeny i skopiować do katalogu głównego?

    Pozdrawiam
    Anna

Dodaj komentarz

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

mautic is open source marketing automation
Ile byłbyś skłonny zainwestować, aby Twoja firma zwielokrotniła dochody?
obecność w Google jest jak generator klientów

Kliknij TAK, aby zobaczyć:

  • co mogę dla Ciebie zrobić
  • ile na tym zarobisz
  • kiedy osiągniesz efekt
  • i jakie będziesz mieć z tego korzyści

Oferuję Ci 7 lat mojego doświadczenia w marketingu internetowym i sprzedaży. Podaj adres swojej strony i kontakt, a przedstawię Ci możliwości rozwojowe Twojej firmy z punktu widzenia SEO.

Skontaktuję się z Tobą w ciągu 24h
Dziękuję