Newsgroup: it.hobby.fai-da-te
Titolo: [OT] Qualcuno ne capisce di Apache?

Spiritosi... non gli indiani, il server!
Ho un problema a configurare un .htaccess e il NG adatto parrebbe morto e
inattivo.
Se qualcuno se ne intende posso fargli un paio di domande?
Anche per email, volendo, dato che e' totalmente OT.
Boiler
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Anche per email, volendo, dato che e' totalmente OT.
Bah... OTxOT = OT2, quindi spara :-)
-- 
ValeRyo

 writes:
B> Spiritosi... non gli indiani, il server!
B> Ho un problema a configurare un .htaccess e il NG adatto parrebbe
B> morto e inattivo.
Prova a sparare, magari so risponderti. Senno' tiro fuori le frecce :-P,
Saluti,
Luca Polo.
-- 
 /Luca Polo : 
Luca...@gest.unipd.it
 || Dipartimento di Tecnica e       \
| System & network administrator      || Gestione dei Sistemi Industriali |
 \
http://www.gest.unipd.it/~jake
      || Universita` di Padova -- Italy  /

ValeRyo Saeba ha scritto:
umh... questo nick non mi č nuovo

 Anche per email, volendo, dato che e' totalmente OT.
prova............lo ho utilizzato per insieme a php e non ho mai avuto
particoleri problemi di configurazione
;-P

 Prova a sparare, magari so risponderti. Senno' tiro fuori le frecce :-P,
Voglio bloccare l'hotlinking da un sito. Solo due domini devono poter
linkare.
Ho trovato un paio di spiegazioni online, ma differiscono in alcuni
dettagli.
Una suggerisce quanto segue:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainA\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainB\.com/ [NC]
RewriteRule \.(jpe?g|gif)$ - [F]
L'altra, invece, questa configurazione
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainA.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainB.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
Aiutatemi a capire la sintassi, in modo che poi possa impostare come mi
comoda il server.
Se ho capito correttamente, la seconda riga rappresenta in ambo i casi il
referer vuoto, cioè quando il link viene direttamente incollato nella
barra dell'indirizzo del browser.
Immagino, correggetemi se sbaglio, che il punto esclamativo, sia la
negazione logica (quindi la RewriteRule viene applicata, se la condizione
posta *non* è verificata).
A cosa serve l'accento circonflesso ^? Inizio dell'espressione?
E il dollaro? Fine dell'espressione?
È corretto che ci vuole il backslash prima di .com come nella prima
versione?
A cosa servono quei .*$ a fondo riga nella seconda versione?
Cosa significano i flag [NC] e [F]? Mi pare di aver visto da qualche parte
anche [L], possibile?
Saluti e grazie


 Bah... OTxOT = OT2, quindi spara :-)
Vedi la risposta a Luca.
Grazie e ciao


 particoleri problemi di configurazione
Vedi sopra.
Ciao e grazie



non sono cosě pratico, hai visto questi link ?
http://www.minidesign.it/apri/Altri-appunti/htaccess/Come-prevenire-l-hotlinking-usando-il-file-htaccess/
http://www.tophost.it/aiuto/cat2/17/32/
http://kim.biyn.com/Linux/how_to_prevent_hotlinking_images_on_apache_server_using_mod_rewrite

 umh... questo nick non mi č nuovo
Neppure a me :-)
Mi dai un aiuto?
-- 
ValeRyo 

 parte anche [L], possibile?
Al momento mi sfugge... L è locale... comunque ad occhio io userei
le condizioni del primo esempio con il rewrite del secondo.
Dai un'occhiata al manuale dell'apache su 
http://httpd.apache.org
,
nella sezione di mod_rewrite.
-- 
ValeRyo 

 writes:
B> Ho trovato un paio di spiegazioni online, ma differiscono in alcuni
B> dettagli.
I dettagli, da quel che  vedo, sono semplici "finezze" delle espressioni
regolari (si`, OK: "semplici" se gia`  le conosci, senno` e` arabo, e di
quello brutto,  "ma brutto brutto  brutto" per dirla con  gli "Svizzeri"
:-)).
Vediamo le differenze:
B> Una suggerisce quanto segue:
B> RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainA\.com/ [NC]
B> RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainB\.com/ [NC]
B> RewriteRule \.(jpe?g|gif)$ - [F]
B> L'altra, invece, questa configurazione
B> RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainA.com/.*$ [NC]
B> RewriteCond %{HTTP_REFERER} !^http://(www\.)?domainB.com/.*$ [NC]
B> RewriteRule \.(gif|jpg)$ - [F]
B> Se ho capito correttamente, la seconda riga rappresenta in ambo i casi il
B> referer vuoto, cioè quando il link viene direttamente incollato nella
B> barra dell'indirizzo del browser.
Esatto. Quel  "!$" vuole dire "diverso (!)  da una riga vuota"  (il $ da
solo indica "fine riga": senza altri caratteri prima, una riga vuota).
L'accento circonflesso e` l'opposto: indica l'inizio riga; "!^http" vuol
dire quindi "NON INIZIA con http".
Il backslash  (\) e` un  carattere di "escape": modifica  il significato
del  carattere  successivo,  in   questo  caso  il  "."  che  altrimenti
indicherebbe "un  carattere qualunque":  "\." invece indica  un normale,
punto operaio proletario :-).
Le parentesi raggruppano la  parte di espressione regolare interessata a
cui  viene poi  applicato il  terribile "?"  che  significa "opzionale":
ossia puo` esserci o meno (in questo caso il "www.").
Segue infine la pseudo-bestemmia  (tipo $#%@!PORC@#&%^%) ".*$" che vuole
dire "zero  o piu` ripetizioni (*)  di qualunque carattere (.)  da li` a
fine riga ($)".
[NC] segnala che il  tutto dev'essere case insensitive, altrimenti "WWW"
e` diverso da "www", da "Www", ecc.
Dulcis  in fundo,  la  regola di  riscrittura  dice che  tutto cio`  che
termina con [".jpg", ".jpeg",  ".gif"] (primo gruppo) o [".jpg", ".gif"]
(secondo gruppo  di regole) si becca  un "Forbidden" se  le regole sopra
sono  state soddisfatte  e  quindi  il Referer  NON  appartiene ai  siti
ammessi.
Ad es.:
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?dominio\.it [NC]
Permetterebbe il linking solo ai siti che appartengono a 
dominio.it
 o ad
un  suo   sottodominio:  
dominio.it
,  
www.dominio.it
,  
pippo.dominio.it
,
www.pippo.dominio.it
, ecc.
Qui trovi altre  due perle delle regexp: le  parentesi quadre (per range
di valori contigui: [a-z]  = "abcdefgh....xyz", [0-9] = "0123456789"; se
vuoi  metterci  il segno  "-"  come  carattere  dev'essere il  primo,  o
l'interprete non lo  puo` distinguere) e il "+", che  indica "una o piu`
ripetizioni del gruppo che precede" (confronta con "*" sopra).
Se ti serve  altro e non ti sei gia` suicidato,  sono sempre qua, almeno
nei prossimi minuti... :-).


anche [L], possibile?
[NC] no case ignora il case dei caratteri
[F] restituisce un Forbidden (cod. 403)
Quindi la regola di sopra si legge se non è un link relativo interno
(prima riga) o il link non arriva da uno dei due domini non restituire
l'URL richiesta ma rispondi con un codice 403
Google ti aiuterà parecchio ad iniziare dalla pagina relativa al
mod.rewrite di Apache:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
 (vale pure il
per il 2.x)
-- 
************************************************************
* Visita il sito ufficiale del gruppo: 
http://www.i-h-f.it
 *
************************************************************
Stefano Aglietti - StallonIt on IRCnet
Email: 
st...@40annibuttati.it
 
ste...@people.it
Sites: 
http://www.40annibuttati.it
 - 
http://www.wordpress-it.it
 
http://www.grassochecala.it
 

 SNIP
Grazie tutti. Gentilissimi!
Provo a risolvere i problemi e vi faccio sapere!
Boiler
P.S.: Luca sei un mito, mai riso cosě di gusto apprendendo nozioni ;-)


 writes:
B> P.S.: Luca sei un mito, mai riso così di gusto apprendendo nozioni ;-)
Grazie: sono sempre stato un fautore del "ludendo docere".
