Jak zarządzać przekierowaniami w Drupalu? Przegląd modułu Redirect

Jak zarządzać przekierowaniami w Drupalu? Przegląd modułu Redirect

Jednym z najbardziej irytujących błędów na stronach internetowych są niedziałające linki, prowadzące donikąd lub pokazujące treści zupełnie inne niż oczekiwane. Nie lubią ich zarówno Internauci, jak i Googlebot. Sposobem na uniknięcie błędnych linków w Drupalu jest skorzystanie z modułu Redirect.

Tworzone przez ten moduł przekierowania adresów są niezwykle przydatne, gdy w witrynie dochodzi do zmian w strukturze URL - zarówno globalnych, jak i spowodowanych prozaiczną edycją pojedynczych treści. Dzięki przekierowaniom użytkownik zawsze odnajdzie to, czego szukał, nawet jeśli adres URL jest już nieaktualny.

Daty

Moduł został po raz pierwszy udostępniony w 2006 roku przez Moshe Weitzmana w bardzo uproszczonej formie. Pierwsza wersja alpha ukazała się w 2010 roku, a wersja stabilna została wydana dla Drupala 8 w 2017 roku. Od kilku lat Redirect rozwija się zdecydowanie bardziej dynamicznie, przy wsparciu społeczności Drupal.org.

Popularność

Nawet brak stabilnego wydania dla Drupal 7 nie zniechęcił twórców stron do używania modułu Redirect. Według oficjalnych statystyk wykorzystywany jest on obecnie na ponad 260 tysięcy witryn, z czego 45% używa Drupala 8.

Oficjalne statystyki użycia dla modułu Drupala Redirect

Twórcy modułu

Modułem opiekuje się trzech programistów:

Ostatnie kilka wydań ukazało się przy dużym wsparciu innych użytkowników Drupal.org. Jak dotąd swoją cegiełkę do tworzenia modułu dołożyło ponad 110 osób.

Przeznaczenie modułu

Moduł Redirect służy do tworzenia przekierowań URL w obrębie Drupala. Dzięki niemu możemy przenieść użytkownika z jednego adresu wewnątrz strony do innego. Zauważ, że istnieje duża różnica pomiędzy przekierowaniem, a aliasem.

  • Alias stanowi “przyjazny” URL treści, który widzimy w pasku adresu przeglądarki internetowej. Jeśli nie zdefiniujemy aliasu dla danej podstrony, otrzyma ona domyślny adres typu “/node/123” albo “/taxonomy/term/456”.
  • Przekierowanie to reguła, która uruchamiana jest, gdy znajdziemy się pod danym adresem URL. Reguła określa adres docelowy, do którego zostanie przeniesiony użytkownik, język, dla którego nastąpi przekierowanie oraz rodzaj zwróconego kodu HTTP. Docelowa strona pojawi się w pasku adresu przeglądarki tylko wtedy, kiedy nie ma już więcej przekierowań do wykonania.

Przekierowania służą przede wszystkim do poprawiania struktury linkowania wewnątrz strony. Redirect ma jednak jeszcze kilka ciekawych zastosowań wynikających z faktu, że w wersji dla Drupala 8 otrzymał część funkcjonalności modułu Global Redirect. Opowiem o nich w dalszej części artykułu.

Unboxing

Moduł Redirect możesz pobrać ze strony Drupal.org. Rekomendowaną metodą instalacji jest tu użycie komendy Composera:

composer require drupal/redirect

Panel ustawień modułu znajdziesz przechodząc do Configuration → Search and Metadata → URL Redirects.

Użycie modułu

Głównym elementem konfiguracji modułu jest lista przekierowań:

Lista przekierowań w module Drupala Redirect

Aby dodać nowe przekierowanie, wybierz “+ Add redirect”, a następnie uzupełnij niezbędne informacje, czyli adres źródłowy, adres docelowy, kod HTTP oraz język.

 

Dodawanie nowego przekierowania w module Redirect

Warto poświęcić chwilę na poznanie siedmiu dostępnych kodów HTTP. Mają one bowiem kluczowy wpływ na SEO. Zdecydowanie najbardziej przydadzą Ci się:

  • 301 Moved Permanently - żądana strona na stałe zmieniła swój adres. Jest to istotny sygnał dla wyszukiwarek internetowych, które usuwają ze swoich zasobów poprzedni adres strony i zamieniają go na nowy.
  • 302 Found - żądana strona jest chwilowo dostępna pod innym adresem. Kod ten przydaje się w sytuacji, gdy testowo zmieniamy strukturę linkowania na stronie, ale chcemy, aby zmiana została odnotowana przez roboty wyszukiwarek.

Inne dostępne kody to:

  • 300 Multiple Choices - istnieje więcej niż jeden sposób obsłużenia danego zapytania (używany rzadko, np. do obsługi różnych formatów video).
  • 303 See Other - odpowiedź na żądanie znajduje się pod innym adresem (używane np. przy żądaniach POST).
  • 304 Not Modified - informacja dla przeglądarki, że strona nie uległa zmianie od ostatniej wizyty i może zostać pobrana z cache.
  • 305 Use Proxy - żądana strona jest dostępna tylko poprzez proxy.
  • 307 Temporary Redirect - podobnie jak w 302, jednak przy założeniu, że metoda HTTP nie może ulec zmianie.

Opcje dodatkowe

Gdy opanujesz już tworzenie przekierowań, zajrzyj w zakładkę ”Settings”. Znajdziesz tam przede wszystkim dwie ważne opcje, które pomogą Ci w osiągnięciu lepszych wyników w Google.

  • Automatically create redirects when URL aliases are changed - koniecznie zaznacz to ustawienie. Pomoże ono w utrzymaniu porządku na stronie w przypadku zmian w linkowaniu wewnętrznym. Gdy zmodyfikujesz jakikolwiek alias na stronie, utworzone zostanie automatycznie przekierowanie ze starego adresu na nowy.
  • Enforce clean and canonical URLs - dla tej opcji wielu programistów decyduje się na użycie modułu Redirect. Przekierowuje ona użytkownika do kanonicznego adresu danej strony, nie pozostawiając go na roboczym adresie typu “/node/123”. Ustawienie to w Drupalu 7 dostępne było za pośrednictwem modułu Global Redirect.

Hooki i integracje

Moduł udostępnia następujące hooki:

  • hook_redirect_load() - uruchamiany podczas ładowania tablicy z przekierowaniami, umożliwia dodanie do niej nowych pozycji,
  • hook_redirect_load_by_source_alter() - służący do modyfikacji przekierowań dla danego adresu źródłowego,
  • hook_redirect_prepare() - zmieniający postać danego przekierowania w panelu administracyjnym modułu,
  • hook_redirect_alter() - umożliwiający zmianę ustawień przekierowania na chwilę przed jego nastąpieniem.

Dodatkowo Redirect współpracuje z modułem Pathauto. Jest to bardzo zgrany tandem pilnujący tworzenia przekierowań podczas zmian w aliasach stron.

Podsumowanie

Łatwość tworzenia i obsługi przekierowań to ważna cecha profesjonalnego CMS. Moduł Redirect spełnia tę rolę bardzo dobrze. Stanowi stabilne, rozwijane od lat rozwiązanie. Jego użycie usprawnia programowanie w Drupalu.