dhosting.pldhosting.pl
  • Strona główna
  • Zacznij tutaj
  • Kategorie
    • Hosting
    • Poczta
    • Domeny
    • Faktury i płatności
    • Pozostałe
  • Fachowe poradniki
  • Helpdesk 24h
  • Elastyczny Web Hosting →
  • Strona główna
  • Zacznij tutaj
  • Kategorie
    • Hosting
    • Poczta
    • Domeny
    • Faktury i płatności
    • Pozostałe
  • Fachowe poradniki
  • Helpdesk 24h
  • Elastyczny Web Hosting →
Strona główna/Baza wiedzy/Hosting

Moduł mod_rewrite

938 wyświetleń 1

Autor: Jan Elastyczny
25.05.2020

Mod_rewrite to wyspecjalizowany dodatek do serwera WWW umożliwiający wykonanie “przezroczystego” dla użytkownika przekierowania na inny adres URL.

Posiada wiele zastosowań, począwszy od prostej zmiany nieaktualnych adresów na nowe, aż do zmiany linków zawierających zmienne wysyłane w standardzie GET na prostsze, dzięki czemu są one znacznie przyjaźniejsze zarówno osobom odwiedzającym serwis, jak również i wyszukiwarkom internetowym.

Wstęp do przekierowywania adresów

Czytelne adresy to podstawa. Dobrze zaprojektowana strona internetowa posiada także logicznie rozplanowaną strukturę adresów. Zawarte jest w nich często wiele informacji pozwalających odwiedzającemu na zapamiętanie z łatwością pełnego adresu strony.

Jednakże wiele systemów zarządzania zawartością używa linków wyglądających podobnie do poniższego:

http://www.mojafirma.pl/sklep.php?kategoria=kapelusze&produkt=123

Nie jest to przyjazny adres, jednakże programistom dzięki standardowym mechanizmom języków skryptowych (PHP, ASP) jest go najłatwiej zaimplementować.

Ponadto wiąże się z nim kilka problemów:

  • Prezentuje wszystkim odwiedzającym budowę naszego serwisu. Widać w nim nazwę pliku ze skryptem odpowiedzialnym za stronę i nazwy wszystkich pobieranych zmiennych. Może to stanowić furtkę dla crackerów próbujących podmienić wartości zmiennych na inne.
  • W przypadku stosowania przepisywania linków zarówno struktura plików jak i nazwy poszczególnych zmiennych są przed odwiedzającym ukryte.
    W przypadku zmiany technologii wykonania strony zazwyczaj ulegają zmianie adresy URL. Powoduje to chaos wśród odwiedzających kierowanych z innych stron i wyszukiwarek internetowych. W przypadku stosowania mod_rewrite adresy będą wyglądać tak samo, niezależnie od użytego oprogramowania.
  • Linki do stron zawierają znaki specjalne, takie jak znak zapytania (?) oraz ampersand (&), przez co w przypadku tworzenia hiperłączy wymagany jest ich specjalny zapis w formie &
  • Niektóre wyszukiwarki nie indeksują treści generowanych dynamicznie. Dzięki podmianie linków wyglądają one na statyczne strony HTML, które to są analizowane bez problemów.

Używając przepisywania linków uzyskamy więc znacznie prostszy i łatwiejszy do zapamiętania adres.

http://www.mojafirma.pl/produkty/kapelusze/123/

Jest on znacznie logiczniejszy, czytelniejszy i łatwiejszy do zapamiętania. Ponadto żadna wyszukiwarka nie będzie miała z nim problemów.

Proste przepisywanie linków

Proste przekierowania

Na początek zastosujemy bardzo proste przekierowanie. Załóżmy, że zmieniliśmy nazwę pliku z strona.html na nowa_strona.html. Odwiedzający poprzez link /strona.html domyślnie ujrzeli by błąd o kodzie 404 – nie znaleziono strony. Ustawiając odpowiednią regułę pozwolimy na korzystanie także ze starego adresu.

W tym celu tworzymy plik .htaccess z następującą treścią:

  • RewriteEngine on
  • RewriteRule ^strona\.html$ nowa_strona.html

Pierwsza linijka włącza moduł rewrite. W drugiej natomiast informujemy serwer, iż przy próbie dostępu do pliku strona.html powinna zostać wyświetlona zawartość pliku nowa_strona.html

Wyrażenie dotyczące starej strony to najtrudniejsza rzecz w zrozumieniu tej reguły.

Widzimy w nim trzy znaki specjalne:

  • Znak ^ oznacza początek ścieżki do wirtualnego pliku znajdującego się wewnątrz katalogu w którym znajduje się plik .htaccess
  • Znak dolara ($), oznacza koniec analizowanej ścieżki wirtualnego pliku.
  • Ukośnik (\) znajdujący się przed kropką to specjalny znacznik wyrażenia regularnego, mówiący, iż następny znak nie jest znakiem specjalnym wyrażenia regularnego, a normalnym znakiem.

Po umieszczeniu tego kodu i otworzeniu pliku strona.html ukaże się nam zawartość nowa_strona.html. Odwiedzający nie zauważy żadnej różnicy.

Wymuszenie zmiany adresu

W opisanym wcześniej przypadku użytkownik odwiedzający stronę nie zauważy zmiany adresu. Możliwe jest zastosowanie tzw. przekierowania – wówczas do przeglądarki zostanie wysłany nakaz odświeżenia adresu w przeglądarce oraz odwiedzenia już nowej strony.

W tym celu na końcu reguły zaprezentowanej powyżej należy dopisać ciąg [R].

RewriteRule ^strona\.html$ nowa_strona.html [R]

Przekierowania zaawansowane używające wyrażeń regularnych

Teraz poznamy naprawdę użyteczne narzędzie. To w nim tkwi cała potęga mod_rewrite.

Jeśli to Twoja pierwsza przygoda z wyrażeniami regularnymi, ich zrozumienie może nastręczyć na początku wielu trudności. Ułatwią Ci to przedstawione przykłady.

Używając wyrażeń regularnych możemy automatycznie przepisać wiele adresów w tym samym momencie.

RewriteRule ^produkty/([0-9][0-9])/$ /informacje.php?ID=$1

Powyższa reguła przechwyci wszystkie adresy rozpoczynające się od ciągu “produkty/12/” następnie dwie cyfry i znak “/”. Przykładowo “produkty/12/” oraz “produkty/99/” przeniosą nas do naszego skryptu.

Części w nawiasach kwadratowych to tzw. zakresy. W naszym przypadku są to cyfry od 0 do 9. Inne ich przykłady to [A-Z] – wielkie litery, [a-z] – małe litery, [A-Za-z] – wszystkie litery bez względu na wielkość.

Umieściliśmy wyrażenie regularne w nawiasach, gdyż zamierzamy wszystkie pasujące do danego wzorca wartości zachować do późniejszego użycia. W tym przypadku przekazujemy je do skryptu PHP jako argument.

Każda para nawiasów z wyrażeniami umieszczana jest w odpowiedniej zmiennej. Jej nazwą jest kolejny numer nawiasu poprzedzony znakiem dolara. Przykładowo, pierwszy oznaczony fragment będzie dostępny pod $1, trzeci pod $3 itp. Po wywołaniu adresu “produkty/12/” przeglądarka wyświetli zawartość strony będącej rzeczywiście pod adresem “informacje.php?id=12“. Oczywiście ten adres zostanie ukryty przed odwiedzającym.

Wielokrotne przekierowania

Gdy w opisanym we wcześniejszym przykładzie przypadku użytkownik wpisze adres w postaci “produkty/12” (pomijając końcowy ukośnik) to serwer zwróci błąd, gdyż nie posiada reguł przechwytujących takie zachowania.

Aby temu zapobiec, zastosujemy na początku regułę przekierowującą wszystkie żądania bez końcowego ukośnika dołączając go do nowego adresu.

RewriteRule ^produkty/([0-9][0-9])$ /produkty/$1/ [R]

W wielokrotnych przekierowaniach na naszych serwerach istotna jest kolejność reguł, zgodnie z kolejnością linii pliku .htaccess. Podana przez nas reguła musi być dopisana linijkę przed opisaną we wcześniejszym rozdziale.

Całość wygląda następująco:

RewriteRule ^produkty/([0-9][0-9])$ /produkty/$1/ [R] 
RewriteRule ^produkty/([0-9][0-9])/$ /informacje.php?ID=$1

Gdy użytkownik odwiedzi adres “produkty/21“, to w pierwszej kolejności zostanie przekierowany na “produkty/21/“, po czym zostanie mu zaprezentowana zawartość pliku informacje.php?ID=21.

Modyfikatory

Obecnie w kodzie reguły zdefiniowaliśmy na stałe ilość znaków wymaganych w linku.

Wywołanie “produkty/1/” jak również “produkty/100/” zakończy się błędem.

Aby nie definiować określonej ilości znaków potrzebnych do reguły, stosujemy tzw. modyfikatory. Spójrzmy na poniższą regułę:

RewriteRule ^products/([0-9]+)/$ /informacje.php?ID=$1

Po zakresie pojawił się modyfikator – znak plusa (+). Oznacza on, iż wymagany jest co najmniej jeden znak z danego zakresu. W tym przypadku pasować będzie do niego zarówno “produkty/1/” jak i “produkty/1000/”

Innymi modyfikatorami są: gwiazdka (oznaczająca zero lub więcej elementów zakresu) i znak zapytania (zero lub jeden znak z zakresu)

Tworzenie skrótów adresów

Dzięki wykorzystaniu mod_rewrite możemy utworzyć “skróty” do często używanych obszarów stron WWW.

Zakładamy, iż większość odwiedzających stronę sklepu z odzieżą z zamiarem kupienia spodni wpisze do przeglądarki:

www.firma.pl/spodnie

Jednakże oprogramowanie naszego sklepu wymaga linków w postaci:

www.firma.pl/odziez/spodnie

Korzystając z poniższej reguły:

RewriteRule ^spodnie(/)?$ /odziez/spodnie/ [R]

Wymusimy na odwiedzających przekierowanie do nowego adresu.

Tags:htaccessmod_rewriteprzekierowaniareguły pliku .htaccessnice url

Czy ten artykuł był pomocy?

1 Tak  Nie
Powiązane artykuły
  • Jak zainstalować Elementora?
  • Czy Elementor wymaga znajomości kodowania?
  • Czy warto nauczyć się obsługi Elementora?
  • Czy warto nauczyć się obsługi Brizy?
  • Czy warto nauczyć się obsługi Divi?
  • Czy warto nauczyć się obsługi Gutenberga?
Elastyczny Web Hosting
Fachowe poradniki
  • Drzewo kategorii i tagi – jak zarządzać strukturą serwisu contentowego
  • Headless CMS – WordPress jako backend Twojego serwisu
  • Jak stworzyć wtyczkę do WordPressa? Poradnik dla początkujących
  • Jak założyć bloga? Kompletny przewodnik instalacji WordPressa dla początkujących
  • Jekyll, generator stron statycznych, alternatywą dla WordPressa
  • Tailwind CSS – utility-first framework alternatywą dla Bootstrap
  • Vue.js jako wtyczka do WordPressa
  • Wielojęzyczna strona w WordPressie bez użycia wtyczek – jak ją stworzyć?
  • WordPress MultiSite – omówienie, instalacja oraz konfiguracja
Hosting
  • Moduł mod_rewrite
  • Jak zainstalować Elementora?
  • Czy Elementor wymaga znajomości kodowania?
  • Czy warto nauczyć się obsługi Elementora?
  • Czy warto nauczyć się obsługi Brizy?
  • Czy warto nauczyć się obsługi Divi?
Pokaż wszystko 473  
Najpopularniejsze
  • W jaki sposób skonfigurować program pocztowy?
  • Czym różni się CC od BCC podczas wysyłania wiadomości e-mail?
  • Jak wykonać polecenie traceroute w systemie Windows?
  • Jak skonfigurować pocztę w Outlook 365?
  • Jak odbierać pocztę ze swojej skrzynki na Gmailu?
Kategorie
  • Kalendarz
  • Pozostałe
    • Program Partnerski
    • Bezpieczeństwo
    • Zarządzanie kontem
    • Inne
  • Domeny
    • Registry Lock
    • Rejestracja i odnowienia domen
    • Transfery domen
    • Zarządzanie domenami w dPanelu
  • Faktury i płatności
    • Faktury VAT
    • Inne
    • Metody i płatności
    • Problemy z płatnością
    • RODO
    • Zarządzanie fakturami i płatnościami w dPanelu
  • Hosting
    • Bazy danych
    • Certyfikaty SSL
    • Cloudflare
    • CRON
    • Inne
    • Elastyczny Web Hosting
    • Kooperacja
    • FTP
    • dKonta / dVPS
    • Operacje PHP
    • Problemy z działaniem stron WWW
    • Redis
    • Rodzaje błędów HTTP
    • SSH
    • Strony WWW
    • Zacznij tutaj
    • Aplikacje internetowe (CMS
  • Poczta
    • Filtry antyspamowe
    • Problemy z odbiorem wiadomości
    • Gmail
    • Problemy z wysyłką wiadomości
    • Konfiguracja programów pocztowych
    • Webmail dPoczta.pl
    • Zarządzanie pocztą w dPanelu
    • Migracja skrzynek
    • Aliasy pocztowe
  • Strona główna
  • Zacznij tutaj
  • Status usług
  • Fachowe poradniki
  • Helpdesk 24h
  • Elastyczny Web Hosting →
  • Copyright © 2023 dhosting.pl Sp. z o.o.