Przepisywanie URL

Przepisywanie URL
URL, o które żąda klienta, może być całkowicie zmienione lub żałośnie za pomocą reguł przepisywania Nginx. Oprócz kierowania przepływem stron wykonujących Nginx, głównym celem aktualizacji adresu URL jest ostrzeganie klientów, których usługi, których szukają. URL są przepisywane za pomocą poleceń powrotu i przepisywania w Nginx. To samo zadanie przepisywania adresów URL jest przeprowadzane przez obie dyrektywy. Dyrektywa przepisywania jest silniejsza niż dyrektywa powrotna, ponieważ może obsłużyć skomplikowane przepisywanie bez potrzeby analizowania adresów URL. Zbadamy w tym przewodniku, w jaki sposób Nginx używa poleceń powrotu i przepisywania do modyfikacji lub przepisywania adresu URL.

Zaleca się, aby aktualizować bieżącą instancję Nginx do wyższej wersji, ponieważ instrukcja ta jest zoptymalizowana dla Nginx wersja 1.0.1 i więcej. Niemniej jednak niektóre z operacji i składni mogą nadal mieć zastosowanie do wersji wcześniej niż wspomniane.

Dyrektywa powrotna w Ubuntu 20.04

Fundamentalne i dobrze zrozumiałe polecenie powrotu służy do realizacji przepisywania adresu URL. Chociaż nie wykorzystuje wyrażeń regularnych, może przeanalizować zmienne pobierane ze ścieżki bloku lokalizacji. Zazwyczaj dyrektywa powrotna służy do przekierowania adresu URL żądania do innego miejsca. W rezultacie często wykorzystuje kody stanu HTTP, takie jak 301 do ciągłego przekierowania i 302 do tymczasowego przekierowania. Przykłady przypadków użycia dyrektywy zwrotnej pokazano w następujących fragmentach kodu:

Wdrożenie dyrektywy zwrotnej w ustawieniu serwera

Podczas przenoszenia witryny do nowej domeny i przekierowanie wszystkich starych adresów URL do nowej domeny, dyrektywa powrotna w środowisku serwerowym jest bardzo przydatna. Uczynienie witryny do przekierowania do wersji „WWW” lub wersji „Non WWW” pomaga również w kanonizacji adresu URL.

Dyrektywa zwrotna w poprzednim kontekście serwera zmienia adres URL przeznaczony dla www.Urlinux.Witryna com, która jest starą domeną www.Urlinux.Witryna COM, która jest nową domeną. Kiedy Nginx widzi adres URL, który zawiera www.Urlinux.com Witryna, natychmiast zatrzymuje przetwarzanie strony i zapewnia klientowi kod 301 odpowiedzi i odbiera adres URL. Schemat $ I $ żądanie URI to dwie zmienne, które są wykorzystywane w dyrektywie powrotnej. $ żądanie Zmienne URI zawiera pełny URI z dowolnymi parametrami. I Schemat $ Zmienna jest stosowana do zdefiniowania schematu URL (HTTP lub HTTPS). Podczas przepisywania adresu URL należy pamiętać, że obie zmienne pobierają te informacje z adresu URL wejściowego.

Wdrożenie dyrektywy zwrotnej w ustawieniu lokalizacji

W niektórych okolicznościach przekazanie stron jest lepsze w radzeniu sobie z domenami. Możesz przekierować strony do innej lokalizacji za pomocą dyrektywy powrotnej znalezionej w bloku lokalizacji.

Gdy żądanie URL DOKŁADNIE pasuje dokładnie do wzoru /artykułów /próbek-Nginx w przykładzie, Nginx przekierowuje żądanie do nowego https: // linux.com/nginx/context-nginx/ adres. Możesz także zmienić pozycję wszystkiego na określoną ścieżkę. Poniższy przykład pokazuje, jak przekierować wszelkie strony oznaczone jako „/próbki” https: // linux.com/języki.

Przepisz dyrektywa w Ubuntu 20.04

Wewnętrzna zdolność serwera WWW do przepisywania adresów URL bez ujawniania podstawowej metody komputera klienta jest realizowana za pośrednictwem dyrektywy przepisania. Używa wyrażeń regularnych i jest zgodny z jego składnią. Zastępujący symbol zastępczy zastępuje dopasowany adres URL. Symabiler zastępczy Regex umożliwia użycie wyrażeń regularnych. A flaga umożliwia zmianę przepływu wykonania. Flagi pękają, stałe, przekierowani i ostatnie są obecnie używane w przepisywaniu dyrektyw.

Szczegóły składni podano w następujący sposób:

  • Regex: Wyrażenie regularne zbudowane przy użyciu PCRE stosowane do adresu URL żądań przychodzących.
  • Zamiennik-URL: Jeśli żądany adres URL pasuje do wyrażenia regularnego, żądany adres URL jest zmieniany za pomocą ciągów zastępczych.
  • Flaga: To, czy polecenie przepisywania musi zostać przetworzone dalej, zależy od wartości flagi.

Zauważ, że tylko kody 301 lub 302 mogą zostać zwrócone przez dyrektywę przepisania. Po dyrektywie przepisywania dyrektywa zwrotna musi zostać wyraźnie uwzględniona, jeśli chcesz zwrócić jakiekolwiek dodatkowe kody.

Wdrożenie dyrektywy przepisywania strony statycznej

Weź przypadek, w którym chcesz zmienić adres URL strony, taki jak https: // linux.Com/nginx-próbki do https: // linux.com/innaPage.html. W poniższym bloku lokalizacji przewidziana jest przepisana dyrektywa w celu wykonania tego samego zadania.

Zgodnie z lokalizacją polecenia Lokalizacja = /nginx próbek, tylko adresy URL z dokładnym prefiksem /nginx-próbkami pasują do bloku lokalizacji. URL żądającego jest badany przez NGINX dla „/nginx próbek?$ ”Wzór. Konkretne znaczenia bohaterów „^”, ”?”I„ $ ”są wykorzystywane do zdefiniowania wzoru. Ciąg, który należy dopasować, zaczyna się od „^”. Koniec sznurka do dopasowania jest wskazany przez symbol „$”. Znak modyfikujący nie-zielony jest „?".

Po znalezieniu meczu nie-zielony modyfikator przestaje szukać wzorów. Jeśli żądany URI pasuje do wzoru, „Inna strona.html ”jest zastąpiony. Przepisywanie również kończy się, ponieważ ograniczenie przepisywania kończy się na przerwę. Ale zmodyfikowane żądanie nie jest przekazywane do innej lokalizacji.

Implementacja Dyrektywy Rewrite dla strony dynamicznej

Teraz rozważ stronę dynamiczną, na której część dynamiczna to id = 11: https: // www.Linux.com/Linux-User.php?ID = 11 (UID). Jeśli korzystasz z najnowszego sposobu przepisywania adresów URL, potrzebujesz 10 dyrektyw przepisywania dla każdego z 10 użytkowników. Zamiast tego możliwe jest wyodrębnienie komponentów adresu URL do zmiennych i wykorzystanie tych zmiennych do utworzenia pojedynczego polecenia przepisywania, które obsługuje wszystkie strony dynamiczne.

Z poleceniem lokalizacji „LOKATION = /LINUX-USER”, Nginx jest instruowany, aby przeszukać dyrektywę lokalizacji za pomocą adresu URL, która ma dokładnie prefiks „ /Linux-User”. Nginx skanuje żądany adres URL dla „Linux-User/([0-9]+)/?$ ”Wzór. Zakres znaków w kwadratowym wyrażeniu regularnym „^[0-9]+” wynosi od 0 do 9. Pasujący charakter lub znaki są oznaczone symbolem „+”. W przypadku braku znaku „+” wyrażenie regularne identyfikuje tylko pojedyncze znaki, takie jak 5 lub 8, ale nie 25 lub 44. Nawiązki wyrażenia regularnego () oznacza odniesienie wsteczne. To odniesienie jest pokazane przez „1 $” w „Linux-User.php?ID = 1 USD ”.

Wniosek

Dyrektywy przepisywania lub powrotu można teraz użyć do przepisywania adresów URL. Przykłady przepisywania podane na tym kursie są proste do zrozumienia. Jak pokazano w przykładach, dyrektywa powrotna służy do poinformowania przeglądarki i wyszukiwarki krawędzi lokalizacji strony. Podczas gdy dyrektywa przepisywania może być wykorzystana do oderwania operacji przepisywania adresu URL bez uświadomienia przeglądarki o tym, co dzieje się za kulisami.