Dodatkowe warunki dopasowania w mod_rewrite

Najlepszy hosting dla stron WWW

Szybki hosting dla WordPressa

Używając komendy RewriteCond można zdefiniować dodatkowe warunki, które muszą być spełnione, aby wykonane zostały reguły (RewriteRule).

Składnia tej komendy wygląda następująco:

RewriteCond sprawdzany_parametr warunek flagi
  • sprawdzany_parametr – używamy tu zmiennej globalnej,
  • warunek – wyrażenie regularne dopasowywane do sprawdzanego parametru (zmiennej globalnej),
  • flagi – ich występowanie jest opcjonalne. Wyróżniamy 2 flagi:
    • [NC] – nocase (ignorowanie wielkości liter),
    • [OR] – warunek logiczny „lub”.
WAŻNE! Warunków może być wiele, domyślnie (czyli bez flagi [OR]) przyjmowana jest zasada, że wszystkie wymienione po sobie warunki (występujące przed RewriteRule) muszą być spełnione.
WAŻNE! Wykaz najbardziej popularnych zmiennych znajdziesz w tym artykule.

Przykład:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^artykul/ [NC]
RewriteRule ^artykul/([a-zA-Z]+)/?$ /wyswietl.php?artykul=$1 [L]

Jak widać przykład został nieco zmodyfikowany. Linia druga sprawdza, czy wywoływany adres zaczyna się od “artykul/” – jeśli tak, wykona pierwszą komendę RewriteRule, którą napotka poniżej. Flaga NC informuje parser, że ignorujemy wielkość liter.

Natomiast w następnej linii  (trzeciej) widzimy znaną nam komendę RewriteRule. Została ona jednak lekko zmodyfikowana.

  • Pojawiła się fraza “^artykul/([a-zA-Z]+)/?$” – jak widać po znaku “/” pojawił się znak zapytania. Zgodnie ze składnią wyrażeń regularnych, informuje on, że znak który go poprzedza może wystąpić lub nie. W ten sposób załatwiamy sprawę linków, które mogą posiadać kończący slash lub nie.
  • Pojawiła się również flaga “L”, która oznacza zakończenie wykonywania przepisywania – jeżeli w następnych liniach znajdują się kolejne komendy RewriteRule czy RewriteCond to nie zostaną one wykonane.

Aby lepiej to zrozumieć, posłużymy się innym przykładem. Jeśli posiadasz popularny serwis WWW, na pewno zetknąłeś się ze zjawiskiem linkowania z obcych serwisów do Twoich obrazków (plików graficznych). Jest to nadużycie, które dodatkowo generuje ruch na Twoim serwerze. Jak się przed tym zabezpieczyć? Można wykorzystać mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?twojadomena\.pl [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://.*$
RewriteRule \.(jpe?g|gif|bmp|png)$ /obrazki/kradziez.png [L]

Wszystkie trzy komendy RewriteCond sprawdzają wartość zmiennej HTTP_REFERER:

  1. Sprawdza, czy wartość jest inna od twojej domeny, w której działa serwis (linia druga),
  2. Sprawdza, czy wartość czasem nie jest pusta. Pusta wartość oznacza przeważnie, że ktoś w przeglądarce wpisał odnośnika ręcznie. Takich wywołań nie chcemy blokować (linia trzecia),
  3. Sprawdza, czy zawartość tej zmiennej w ogóle zawiera adres URL. Niektóre oprogramowanie podmienia wartość HTTP_REFERER na zwykły tekst (np. oprogramowanie typu firewall). Takich wywołań również nie chcemy blokować (linia czwarta).

Jeśli te trzy warunki są spełnione, wykonywana jest komenda RewriteRule, która dla wszystkich adresów odwołujących się do obrazków, odpowiada wysyłając nowy adres, który wskazuje na obrazek informujący o kradzieży.

Sprawdzanie rodzaju połączenia

Używając mod_rewrite możemy sprawdzić, czy użytkownik wywołując daną stronę łączy się po SSL. Jeśli nie, możemy takie połączenie wymusić.

RewriteEngine On
RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R]

Uzależnienie przepisania od czasu

Czasami zachodzi potrzeba przekierowania osoby na stronę specjalną w zależności od aktualnego czasu.

RewriteEngine On
RewriteCond %{TIME_HOUR} >20
RewriteCond %{TIME_HOUR} <8
RewriteRule .* /nieczynne.html [R]

Taką regułę można zastosować np. w przypadku sklepu, który działa tylko w godzinach od 8 do 20 (wtedy jest obsługa techniczna). Poza tymi godzinami, niezależnie od wpisywanego adresu, przekierowujemy użytkownika na stronę nieczynne.html

Jakie artykuły na temat mod_rewrite znajdę w dokumentacji home.pl?

Bezpieczny hosting dla Twojej strony WWW

Przygotowaliśmy miejsce, w którym Twoja strona WWW i poczta e-mail będą się czuły komfortowo.


Hosting stworzony dla WordPressa

Masz stronę WWW na WordPressie? My też uwielbiamy ten system dla stron internetowych. Dlatego stworzyliśmy hosting specjalnie dla jego użytkowników.


Dedykowane wsparcie IT i megarabaty!

Pomoc Premium dedykujemy najbardziej wymagającym Klientom home.pl. Powiedz, co możemy dla Ciebie zrobić i oszczędzaj czas.

Poznaj Pomoc Premium Sprawdź ofertę

  • Czy artykuł był pomocny ?
  • Tak   Nie
Szukaj
Generic filters
Tylko dokładne dopasowania
Szukaj w tytułach
Szukaj w treści
Filter by Article Categories
Najczęściej zadawane pytania
Dodatkowe narzędzia hostingu
Statystyki serwera (nowe)
Połączenie SSH
Statystyki serwera (stare)
WebFTP
Autoinstalator
Kontrola wersji (SVN)
Listy mailingowe
Poczta home.pl
Obsługa poczty webmail
Programy pocztowe
Nowa platforma home.pl
Częste pytania
Bezpieczeństwo
Instalacje
Panel klienta
Domeny
Hosting
Serwer Apache
Bazy danych
Certyfikaty SSL
Zamawianie SSL
Instalacja i konfiguracja SSL
Poczta e-mail
Office 365
WordPress Hosting SSD
Dodatki od partnerów
Poprzednia platforma home.pl
Certyfikaty SSL
Zamawianie certyfikatów SSL
Konfiguracja i instalacja SSL
Panel home.pl
Informacje podstawowe
Pulpit
Usługi
Płatności
Profil
Centrum Pomocy
Operacje w Panelu home.pl
Serwery
WebFTP
Informacje podstawowe
Konfiguracja serwerów
Serwery Unix
Serwery Windows
Obsługa baz danych
phpMyAdmin (MySQL)
phpPgAdmin (PgSQL)
myLittleAdmin (MSSQL)
Sklep internetowy eSklep
Panel usługi eSklep
RODO w sklepie internetowym
Panel sklepu internetowego
Pierwsze kroki
Promocja sklepu
Sprzedaż
Pierwsze uruchomienie
Dodatki od partnerów
Asortyment
Klienci
Integracje
Inne integracje
Systemy aukcyjne
Baza produktów
Aplikacje
App store
Aplikacja mobilna
Marketing
Modyfikacja wyglądu
Dokumentacja
Dla deweloperów
Style graficzne
Inne zagadnienia
Raporty i statystyki
Zawartość
Filmy instruktażowe
Konfiguracja sklepu
Rozliczenia i dokumenty
Faktury
Zmiana danych (cesja)
Rozliczenia i płatności
Dokumenty do pobrania
Produkty i usługi
Kreator Stron WWW
eCommerce
Moduły
Ustawienia
Szablony
Nawigacja
Publikacja i dodatki
Szybki start
Prestahosting
Profesjonalne usługi IT
Certyfikaty SSL
Przywracanie danych
Udostępnienie logów
Operacje na plikach i bazach danych
WordPress
Terminal płatniczy SumUp
Wordpress hosting SSD
Office 365
OneDrive
Domeny
Informacje podstawowe
Rejestracja / opłacanie
Konfiguracja domen
Transfer domen
Giełda domen
Dodatki do domen
Serwery VPS
Skrzynki e-mail
Microsoft Exchange
Cloud Email Xchange
Obsługa skrzynek w Panelu home.pl
Jak zarejestrować Personal email lub Business email?
Bezpieczeństwo
eKsięgowość
Reklama internetowa
Reklama Allegro Ads
Tworzenie stron WWW
Contact LEADer
Reklama banerowa Google
Zakupy Google
Google Ads (AdWords)
eKampanie Google
SEMSTORM
Pozycjonowanie
rankingCoach
Baza wiedzy
Facebook
Systemy CMS
Internet w praktyce
Przydatne programy
Konfiguracja programów FTP
Zagadnienia techniczne
.htaccess
mod_rewrite
Kursy i specyfikacje
Kurs HTML
Kurs PHP
Kurs SQL
Rejestracja usług
RODO w home.pl
English
Control Panel
Webmail
FTP
Office 365
WordPress
SSL
Aplikacje w marketplace
SimplySign
SiteLock - ochrona WWW
Dropsuite Email Backup
CCleaner
Antywirus Kaspersky
Dropbox - dysk w chmurze
Płatności PayU
Programy antywirusowe AVAST
Office 365
AVG PC TuneUp
Reklama na start
Google AdWords
Zareklamuj stronę WWW na Facebook
Cloud Email Xchange
Brand24
Microsoft OneDrive
FreshMail.pl
Tłumaczenia online
G Suite - poczta Gmail
Program prowizyjny
Acronis Backup
Informacje podstawowe
Ustawienia dodatkowe
Panel użytkownika
Panel administratora
lub