1. Panin selle reegli htaccess-faili, et keelata tühjad viitajad, mis tagastavad 403

    SetEnvIfNoCase Referer '^$' bad_user Deny from env=bad_user 

    Ma näen logi, see eitab ka Googleboti, mis toimib ka tühja suunajana. Kas saab reeglit muuta, et võimaldada Googlebotile juurdepääs ja keelata kõik ülejäänud tühjad viitajad?

  2. Olen blokeerinud ühe suunaja www.example.com kasutades

    RewriteCond %{HTTP_REFERER} example\.com [NC] RewriteRule .* - [F] 

    See töötab hästi, tagastades 403, aga mis siis, kui ta viitab example.com/another_page?

    Nii et ma tegin seda:

    RewriteCond %{HTTP_REFERER} example\.com [NC,OR] RewriteCond %{HTTP_REFERER} example/another_page\.com/ RewriteRule .* - [F] 

    On see õige?

  3. Kuidas saab selle kasutajaagendi blokeerida: Mozilla/5.0/Firefox/42.0 - nbertaupete95(at)gmail.com? Kuidas reegel peaks välja nägema? Kas see üks töötab?

    RewriteCond %{HTTP_USER_AGENT} ^nbertaupete95(at)gmail.com [NC] RewriteRule .* - [F,L] 

  • 403 ei põhjusta mitte viitaja, vaid pigem server. A 403 näitab, et server saab päringust aru, kuid keeldub päringut autoriseerimast. Soovitan viidata Stacki ülevoolus esitatud küsimusele siin: stackoverflow.com/questions/3297048/…
  • jah..aga server ütleb niimoodi, et viitajal pole luba veebisaidile juurde pääseda, eks?
  • Üks asi on kindel (või vähemalt enamikul juhtudel), see tähendab, et me ei taha kindlasti GoogleBoti keelata. Kas teie saidil on fail robots.txt?
  • jah, jah ... see on põhjus, miks ma küsin, kuidas tühjast viitajast keelduda ilma googleboti blokeerimata.
  • 1 Miks proovite keelata juurdepääsu tema juurde ilma viitajateta? Lisaks sellele, et otsingumootorite ämblikud ei kasuta viitajaid, pole neid teie külastajatel, kes sisestavad teie URL-i või külastavad e-posti aadressi. Mõned kasutajad installivad viitajate keelamiseks brauseri pistikprogrammid. Suunaja on nii tihti tühi, et võite tekitada probleeme 10% või enamale teie seaduslikest külastajatest.

Nagu olete leidnud (ja kommentaarides hoiatasite), ei tohiks te proovida blokeerida tühja päringuid Referer päis. Google (ja enamik roboteid) ja paljud seaduslikud kasutajad ei saada HTTP-d Referer päis (vähemalt mingil hetkel), nii et see tekitab teile lihtsalt probleeme.

Oma küsimuses kahele järelejäänud päringule vastamiseks ...

  1. Olen blokeerinud ühe suunaja www.example.com kasutades

    RewriteCond %{HTTP_REFERER} example\.com [NC] RewriteRule .* - [F] 

    See töötab hästi, tagastades 403, aga mis siis, kui ta viitab example.com/another_page?

Teil pole vaja oma olemasoleva (te) direktiivi (de) suhtes midagi muuta. Esimene RewriteCond direktiiv juba blokeerib kõik soovitajad, kes seda lihtsalt teevad sisaldab example.com. Pange tähele, et example\.com on regex (regulaarne väljend) (sellepärast on punkt tagaküljega põgenenud). Ilma ühegi ankrud, sobib muster loomulikult kõikjal HTTP_REFERER.

(Kuid muster oma lisadirektiivis example/another_page\.com/ on natuke pudruks igatahes, nii et ei sobiks kunagi nii nagu ette nähtud. See poleks olnud oluline, sest see sobib esimesega seisund igatahes.)

  1. Kuidas saab selle kasutajaagendi blokeerida: Mozilla/5.0/Firefox/42.0 - nbertaupete95(at)gmail.com? Kuidas reegel peaks välja nägema? Kas see üks töötab?

    RewriteCond %{HTTP_USER_AGENT} ^nbertaupete95(at)gmail.com [NC] RewriteRule .* - [F,L] 

Ei, see ei töötaks, regex pole õige. Olete tutvustanud stringi algust ankur (^) regexil, nii et see sobib ainult kasutajaagentidega algus "nbertaupete95 ...". Esitatud kasutajaagendi stringis on see alamstring sisalduvad seda.

Samuti sulgudes (( ja )) on regexis erilised metamärgid - nende jaoks kasutatakse vaheldumine ja alamustrite jäädvustamiseks. Sõna otsesesse sulgudesse sobitamiseks tuleb need näiteks kaldkriipsuga ära jätta. \(.

Nii et teie näide peaks selle asemel lugema järgmist:

RewriteCond %{HTTP_USER_AGENT} nbertaupete95\(at\)gmail\.com RewriteRule .* - [F] 

The L lippu pole vaja kasutada F (see on kaudne). The NC lipp lipul _CondPattern_ on ka tarbetu, välja arvatud juhul, kui sellel kasutajaagendil on juhtumivariatsioone? Samuti tuleb punktidest välja sõita, et need sobiksid sõnasõnalise punktiga, nagu te tegite oma varasemates direktiivides.

Nimetatud kasutajaagendis esineb "e-posti aadress" kasutajaagendi lõpus. Sel juhul saate lisada stringi lõpu ankur ($) regexile, näiteks: nbertaupete95\(at\)gmail\.com$.

none: Charles Robertson | none

none