Archive for the ‘Search Engines’ Category

Come prevenire hotlinking con il file .htaccess

Wednesday, October 14th, 2009

Gli hotlinking sono dei link “inline“, dei link che linkano direttamente all’oggetto, (solitamente un’immagine, un file multimediale, ma anche l’intera pagina) che si trova in una pagina di un sito esterno.

Quest’ultimo ha quindi un link inline dal primo sul quale si trova l’oggetto ed utilizza, tra l’altro, anche la sua banda di traffico. Una questione delicata quindi se si ha una determinata quantità di banda giornaliera o mensile a disposizione.

Questo potrebbe essere negativo per chi ha un photoblog o presenta sul sito delle belle foto, che vengono linkate per essere utilizzate in altri siti (senza permesso tra l’altro).

Per chi utilizza un server apache si hanno buone probabilità di bloccare gli hotlinking tramite il file .htaccess.

Nel file .htaccess si prepara una lista, in cui si indica l’indirizzo del sito o dei siti che sono autorizzati ad utilizzare gli oggetti (immagini, file, pagine) presentati sul sito in questione. Si indica quale URL è autorizzato ad utilizzare un determinato formato file (definito con l’estensione dello stesso).

Esempio: tutte le richieste dirette ai file con l’estensione .jpg dal dominio “nomedominio.com” vengono autorizzate, tutti gli altri accessi da altri domini vengono indirizzate verso un altro URL, per esempio un file immagine.

Si introduce "nomedominio.com" nella lista degli URL autorizzati, le estensioni gif,jpg,GIF,JPG nelle estensioni ammesse e l’URL per il riindirizzamento.

Si aggiungono quindi le seguenti righe nel file .htaccess che si trova nella directory root del server:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.com*$ [NC]
RewriteRule .*\.(gif|jpg|GIF|JPG)$ http://www.nomedominio.com/image.jpg [R,NC,L]

Se “RewriteEngine on” fosse già stato introdotto precedentemente, aggiungere solamente le altre righe.

Questa è un’eccezione nel file .htaccess:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.it/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.it$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.org/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?nomedominio.org$ [NC]
RewriteRule .*\.(gif|jpg|GIF|JPG)$ http://www.nomedominio.com/image.jpg [R,NC,L]

Coloro che hanno ancora hotlinking verso il sito continuano ad utilizzare banda del server (l’immagine che viene caricata), ma non potranno più utilizzare le foto!

Altra eccezione: permesso di Hotlinking dai motori di ricerca in modo che essi possano scaricare le immagini. Nella regola che segue i motori di ricerca quali Google, Yahoo, Msn e Ask vengono abilitati a scaricare le immagini del sito senza divieti.

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?nomedominio\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteCond %{HTTP_REFERER} !images.google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !msn\. [NC]
RewriteCond %{HTTP_REFERER} !ask\. [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC,L]

La regola Rewrite Cond in questo caso significa “condizione per l’ammissione dell’Hotlinking”.

Il punto esclamativo “!” significa: “se non é” il mio sito o se non é Google o Ask, riscrivi la condizione di divieto per i file jpg, gif, bmp e png.

Inviare un’immagine voluta

Se poi l’indirizzo dell’immagine viene inserito direttamente nel browser si potrebbe far apparire la foto con il link al sito sotto di essa. Per far questo si deve creare un piccolo file che verrà poi richiamato in quei casi.

Il file, che chiameremo nocopy.php, lo inseriremo nella root come un semplice file php:

<?php
header("Content-type: text/html");
header("Expires: Tue, 26 Jul 2030 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0?,
false);
header("Pragma: no-cache");
$pic = strip_tags( $_GET['pic'] );
if ( ! $pic ) {
die("Non ci sono immagini!");
}
?>
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>< ?php echo($pic); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1?> </meta>
</head>

<body>
<p><img src="images/<?php echo($pic); ?/>" alt="Image"></p>
<p>Immagine del sito <a href="http://www.domain.com/" rel="nofollow"> domain.com </a>.</p>

</body>
</html>

Nel file .htaccess si inseriscono poi i seguenti comandi:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !domain\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteRule (.*) /nocopy.php?pic=$1

In questo modo non è possibile fare un Hotlink all’immagine del sito e per chi apre l’immagine introducendo l’indirizzo della stessa direttamente nel browser riceverà l’immagine con sotto di essa il link al proprio sito.

Se poi si vuole far apparire un’altra foto al posto di quella Hotlinkata si deve modificare l’ultima riga del codice (in questo caso peró non si risparmia banda):

RewriteRule \.(ico|jpg|jpeg|gif|bmp|png|pdf|css)$ images/nohotlink.gif [L]

L’immagine "nohotlink.gif" é l’immagine che si vuole far apparire al posto della richiesta.

Alcuni siti possono però riportare la foto

Però si potrebbe avere la necessità che determinati siti, e non solo motori di ricerca, potrebbero ugualmente avere la possibilità di fare un hotlink alla foto del proprio sito.

In questo caso metto le seguenti righe:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?sitoesterno.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sitoesterno.com*$ [NC]

Parametri:
[NC] = Non Case sensitive
F = Restituisci errore 403 (Forbidden)
L = Last rule, cioè non leggere oltre perché questa è l’ultima regola della singola condizione del Rewrite.

Diversi nomi dominio sullo stesso sito

Wednesday, October 14th, 2009

Si potrebbe avere il seguente caso: si ha un nome dominio registrato con un indirizzo IP, sullo stesso indirizzo potrebbero esserci registrati altri nomi dominio, oppure un nome dominio vecchio che si vuole eliminare, quindi quando si apre uno dei nomi dominio con un browser, nella barra dell’inidirizzo del browser appare l’indirizzo digitato.

Ma si potrebbe volere avere un unico indirizzo, anche se ne venisse digitato un altro. Il problema viene risolto introducendo le seguenti righe nel file .htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?vecchio-nomedominio\.com
RewriteRule (.*) http://www.nuovo-nomedominio.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?vecchio-nomedominio1\.com
RewriteRule (.*) http://www.nuovo-nomedominio.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?vecchio-nomedominio2\.com
RewriteRule (.*) http://www.nuovo-nomedominio.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.nuovo-nomedominio\.com$
RewriteRule ^(.*)$ http://www.nuovo-nomedominio.com/$1 [R=301,L]

Si possono introdurre più righe con più nomi dominio nel caso che si abbiano registrati più domini.

L’ultima istruzione serve per aggiungere www nel caso si abbia scritto il nome dominio senza www. Se non si avessero vecchi nomi dominio da annullare, basterebbe l’ultima istruzione.

Vedi anche questo articolo sul redirect indirizzo con www da .htaccess.

Con queste righe faccio un riindirizzamento della dir subdir:

RewriteCond %{REQUEST_URI} subdir/(.*) [NC]
RewriteRule ^(.*) http://subdir.nomedominio.com/%1 [QSA,L,R=301]

AdWords con i diversi motori di ricerca

Wednesday, October 14th, 2009

Raggiungere una posizione alta nei motori di ricerca. Per fare questo potete acquistate il piazzamento direttamente dal motore di ricerca. Il sistema si chiama AdWords su Google, Premium Listing su Fireball e Lycos, Keyword Advertising su Altavista.

Il principio è sempre lo stesso: vengono registrate delle parole con le quali si vuole essere trovati.

Se un visitatore richiama una di queste parole, il link viene presentato con i risultati della ricerca. Se il link poi viene cliccato, viene pagato un importo prefissato.

Il successo del piazzamento a pagamento dipende dalla popolarità del motore di ricerca e dalla corrispondenza tra parola registrata e testo pubblicato, per fare in modo di raggiungere il gruppo di utenti desiderato.

Nel caso vengano scelte delle parole irrilevanti, queste vengono fatte vedere nella statistica di Google. Qui si può anche definire l’importo massimale giornaliero che si mette a disposizione. Una volta raggiunto l’importo giornaliero massimo, il link non verrà più visualizzato.

Gli annunci possono essere pubblicati anche su altri siti con il programma AdSense.