Skocz do zawartości

htaccess - problem z HTTP_HOST


kaoso

Rekomendowane odpowiedzi

Witam, ucząc się stworzyłem na podstawie prac innych taki zapis chroniący przed hotlinkowaniem:

RewriteCond %{HTTP_REFERER} !^http(s)?://([a-zA-Z-_0-9]+.)?%{HTTP_HOST} [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !google. [NC]
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
RewriteCond %{HTTP_REFERER} !msn. [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
RewriteCond %{HTTP_REFERER} ^https://.*$
RewriteCond %{REQUEST_URI} !^/kradziez.jpg$
RewriteRule .(jpe?g|gif|png|tiff?|bmp|ico)$ /kradziez.jpg [NC,R,L]

1. W niektórych przykładach stosowano znak ucieczki "\" np. w: "!search\?q=cache [NC]" albo przed kropką. W innych nie. Jak to w końcu jest: gdzie stosować a gdzie nie. I tak i tak działa - przynajmniej na tym serwerze co testuję. Czytam kursy o wyrażeniach regularnych i raczej się stosuje tan znak... Jak radzicie? Kiedy go stosować - tylko między ^$ czy wszędzie...

2. Ta stworzona ochrona niby działa jak wpiszę domenę "słownie" ale gdy swoją domenkę przedstawiam jako

a ) %{HTTP_HOST} - jak w przykładzie wyżej

b ) %1

wtedy mi podmienia nawet na swojej www obrazki na kradziez.jpg, czyli nie wstawia nazwy domeny.

W czym problem? Domena wygląda tak powiedzmy: "sub.domena.pl" i wpisana tak działa.

Przykład a) przecież powinien podstawiać nazwę a nie wstawia - dlaczego?

Zapis %1 też nie działa ale domyślam się że mając wcześniej jakieś inne zapisy po prostu powinno być nie 1 a na przykład 3 lub 5 itd.?

3. Czy taką ochroną warto chronić pliki inne np. zip, pdf, css aby nie tracić transferu?

50% kod rabatowy na Hosting WWW, SSD, SEO lub serwer VPS - tylko do 28 listopada - info pw (seohost.pl)

Odnośnik do komentarza
Udostępnij na innych stronach

1) Wzorce to wyrażenia regularne. Jeżeli chcesz zastosować znak specjalny to wstawiasz go bez eskejpowania np. "?", ".". Jeżeli chcesz użyć normalnego znaczenia to dajesz ze slashem. Innymi słowy \. to kropka a sama kropka to specjalny znak. Listy specjalnych znaków znajdziesz bez problemu.

2) Za bardzo kombinujesz, zacznij od czegoś takiego:

RewriteCond %{HTTP_REFERER} !%{HTTP_HOST} [NC]

Potem dokładaj i testuj.

3)Jeżeli istnieje taka potrzeba.

Napisałem kiedyś coś takiego: https://www.forum.optymalizacja.com/topic/69289-podstawy-wyrazen-regularnych-w-kontekscie-mod-rewrite/

Może się przyda.

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedzi :)

1) Wzorce to wyrażenia regularne. - Spoko - uczę się ale trochę już umiem. Po prostu w jednych przykładach ktoś stosował a w takich samych inne osoby nie stosowały - identyczne przykłady! I to mnie zmyliło. Wiem że jak chcę kropkę zwykłą to muszę slashem ("\" to slash? mi się zdaje że back... mylą mi się ich nazwy...) poczęstować tylko nie każdy to stosował... Widocznie na poważnych zagranicznych forach siedziały jakieś mapety i nie działające przykłady wklejały ;) a człowiek potem siedzi myśli - jak to ma działać bez slasha??? ech skoro jednak muszą być "\" i nie ma że się nie chce to już trochę mi wyjaśnia.

Uczyłem się że muszą a tu tyle przykładów bez... miałem kilka lat przerwy w regularnych i wiesz... człowiek myśli może się coś zmieniło błehehehe ;)

2) Ano kombinuję :) na tym nauka polega. Chciałem uniwersala takiego zrobić rozumiesz. Potestuję prostsze wersje.

3) Ok, do nauki nie trzeba. A w życiu się okaże.

Dzięki za tutek, fajna piguła. Idzie do zakładek jakby trzeba było się upewnić. Przejrzę, zawsze coś więcej się przypomni.

50% kod rabatowy na Hosting WWW, SSD, SEO lub serwer VPS - tylko do 28 listopada - info pw (seohost.pl)

Odnośnik do komentarza
Udostępnij na innych stronach

Testuję na 2 serwerach i Twój kod:

RewriteCond %{HTTP_REFERER} !%{HTTP_HOST} [NC]

po prostu nie działa... (!?)

No serio, resztę poleceń pokomentowałem by skupić się na adresie i działa tylko i wyłącznie jak wpiszę domenę ręcznie. Zmienna HTTP_HOST nie działa mi w RewriteCond - o co kaman??? To możliwe?

Jak wpiszę ręcznie to nawet ten bałagan poniżej działa a jak użyję zmiennej to ni huhu:

!^http(s)?://([[:alnum:]_-]+\.)?%domena.pl [NC]

Dlaczego Cond nie widzi zmiennej systemowej? Rule raczej widzi bo inne polecenia działają na bez www itp.

50% kod rabatowy na Hosting WWW, SSD, SEO lub serwer VPS - tylko do 28 listopada - info pw (seohost.pl)

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności