<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AntonelloCicchese.com &#187; WebMaster</title>
	<atom:link href="http://www.antonellocicchese.com/category/webmaster/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.antonellocicchese.com</link>
	<description></description>
	<lastBuildDate>Wed, 28 Apr 2010 20:19:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Regular expressions vol.1</title>
		<link>http://www.antonellocicchese.com/2007/03/24/regular-expressions-vol1/</link>
		<comments>http://www.antonellocicchese.com/2007/03/24/regular-expressions-vol1/#comments</comments>
		<pubDate>Sat, 24 Mar 2007 15:58:40 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Regex]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2007/03/24/regular-expressions-vol1/</guid>
		<description><![CDATA[Validazione email &#8211; Email validation:
^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*(.[a-z]{2,3})$
 Parsing file di log di Apache &#8211; Apache log parsing:
(\d+\.\d+\.\d+\.\d+) (-&#124;\w*) (-&#124;\w*) \[(\d+\/\w+\/\d+):(\d+:\d+:\d+) -(\d\d\d\d)\] "([^"]*)" (\d+) (-&#124;\d+) "([^"]*)" "(.*)"\s*\Z
se utilizzate python è estremamente utile compilare l&#8217;espressione regolare che ho appena scritto in questo modo:
myregex = re.compile('(?P\d+\.\d+\.\d+\.\d+) (?P-&#124;\w*) (?P-&#124;\w*) \[(?P\d+\/\w+\/\d+):(?P\d+:\d+:\d+) -(?P\d\d\d\d)\] "(?P[^"]*)" (?P\d+) (?P-&#124;\d+) "(?P[^"]*)" "(?P.*)"\s*\Z')
in questo modo utilizzando questo codice:
log [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Validazione email &#8211; Email validation:</strong><br />
<code>^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*(.[a-z]{2,3})$</code></p>
<p><strong> Parsing file di log di Apache &#8211; Apache log parsing:</strong><br />
<code>(\d+\.\d+\.\d+\.\d+) (-|\w*) (-|\w*) \[(\d+\/\w+\/\d+):(\d+:\d+:\d+) -(\d\d\d\d)\] "([^"]*)" (\d+) (-|\d+) "([^"]*)" "(.*)"\s*\Z</code></p>
<p>se utilizzate python è estremamente utile compilare l&#8217;espressione regolare che ho appena scritto in questo modo:<br />
<code>myregex = re.compile('(?P<ip>\d+\.\d+\.\d+\.\d+) (?P<identd>-|\w*) (?P<auth>-|\w*) \[(?P<date>\d+\/\w+\/\d+):(?P<time>\d+:\d+:\d+) -(?P<timezone>\d\d\d\d)\] "(?P<request>[^"]*)" (?P<response>\d+) (?P<byte>-|\d+) "(?P<referrer>[^"]*)" "(?P<browser>.*)"\s*\Z')</browser></referrer></byte></response></request></timezone></time></date></auth></identd></ip></code></p>
<p>in questo modo utilizzando questo codice:</p>
<pre lang="python">log = self.regex.match(row)
log_line = log.groupdict()</pre>
<p>nella variabile log_line otterrete un dizionario contenente come chiavi i valori che avete inserito nella fase di compilazione come ?P<nome> e come valore la relativa sottostringa, ad esempio log_line['ip'] = valore ip .</nome></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2007/03/24/regular-expressions-vol1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Inkscape web2.0 icons</title>
		<link>http://www.antonellocicchese.com/2007/02/05/inkscape-web20-icons/</link>
		<comments>http://www.antonellocicchese.com/2007/02/05/inkscape-web20-icons/#comments</comments>
		<pubDate>Mon, 05 Feb 2007 09:28:26 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2007/02/05/inkscape-web20-icons/</guid>
		<description><![CDATA[Hi all, this is a good tutorial (screencast), that I have found on youtube, about how you can do to create a beautiful, plastic stile  sphere icon for your website, using an open source tool for vector graphics Inkscape.
Those kind of images are particular appreciated in &#8220;web2.0 style&#8221; and many website are moving their [...]]]></description>
			<content:encoded><![CDATA[<p><!--post2pdf_exclude-->Hi all, this is a good tutorial (screencast), that I have found on youtube, about how you can do to create a beautiful, plastic stile  sphere icon for your website, using an open source tool for vector graphics Inkscape.</p>
<p>Those kind of images are particular appreciated in &#8220;web2.0 style&#8221; and many website are moving their graphics towards this style, so why don&#8217;t you keep updated?<br />
<span id="more-68"></span><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/PfMDIK4uvV8&#038;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/PfMDIK4uvV8&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2007/02/05/inkscape-web20-icons/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Introduzione ad Ajax</title>
		<link>http://www.antonellocicchese.com/2006/12/11/introduzione-ad-ajax/</link>
		<comments>http://www.antonellocicchese.com/2006/12/11/introduzione-ad-ajax/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 18:44:48 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/12/11/introduzione-ad-ajax/</guid>
		<description><![CDATA[Cos&#8217;è Ajax:
Ajax o Asyncronous JavaScript and XML non è facilmente descrivibile, è un nuovo sistema di pensare il web, di offrire interfacce utente più usabili grazie all&#8217;ausilio delle tecnologie ormai d&#8217;uso comune, fondanti AJAX ossia Javascript, CSS e XML.
Con Ajax è possibile aggiornare singole porzioni di pagine web senza doverle ricaricare, è possibile offrire form [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Cos&#8217;è Ajax:</strong></p>
<p>Ajax o Asyncronous JavaScript and XML non è facilmente descrivibile, è un nuovo sistema di pensare il web, di offrire interfacce utente più usabili grazie all&#8217;ausilio delle tecnologie ormai d&#8217;uso comune, fondanti AJAX ossia Javascript, CSS e XML.<br />
Con Ajax è possibile aggiornare singole porzioni di pagine web senza doverle ricaricare, è possibile offrire form in grado di validare i dati inseriti e di auto-completare quanto digitato dall&#8217;utente, tutto questo vi sembra fantascienza? Dovreste vedere cos&#8217;altro si può fare.</p>
<p>Molti portali e grandi aziende hanno puntato negli ultimi anni su questa innovazione tecnologica, il più visibile tra questi attori è Google, che ha fatto di Ajax il suo cavallo di battaglia, ad esempio, l&#8217;intera interfaccia di GMail è gestita in AJAX e attraverso un complicato sistema di frame e javascript.</p>
<p>Inoltre sempre Google offre ai suoi utenti la possibilità di effettuare delle ricerche con dei suggerimenti, il servizio si chiama <a href="http://labs.google.com/suggest" title="Google Suggest" target="_blank">Google Suggest</a>, in poche parole mentre voi digitate la parola da ricercare, l&#8217;interfaccia di Google vi offre dei suggerimenti che riguardano i possibili risultati ottenuti e la rilevanza, rispetto alla chiave di ricerca, di ciascuno di questi.</p>
<p>Google non è davvero l&#8217;unico, ci sono molti altri esempi, ma non mi dilungherò oltre nei case studies.</p>
<p><span id="more-47"></span></p>
<p><strong>Cos&#8217;è una richiesta Asincrona:</strong></p>
<p>Quando carichiamo una pagina web tutti i suoi elementi vengono caricati in modo sequenziale uno dopo l&#8217;altro, se uno di questi elementi esegue un&#8217;operazione lunga allora il caricamento della  pagina viene sospeso fintanto che il lavoro non è terminato e in seguito viene completato.<br />
Quello appena descritto è il comportamento standard delle pagine web che è definito sincrono, quindi quello che è successo fin&#8217;ora � che se volevamo validare i campi di un form dovevamo inviare il form e in seguito restituire gli eventuali errori, ma&#8230;</p>
<p>Come abbiamo detto AJAX consente un comportamento asincrono, con questo si intende la capacità di un elemento della pagina che deve eseguire un lavoro (anche lungo) di non interrompere il normale caricamento o flusso di lavoro, in questo modo è possibile fornire all&#8217;utente la pagina completamente caricata con i suoi elementi fondamentali, e man mano che l&#8217;utente si sofferma nella pagina caricare altri elementi o effettuare operazioni di qualunque altro tipo.<br />
Tornando quindi al nostro esempio della validazione del form, ci sarà possibile una volta che l&#8217;utente ha completato un campo da validare, inviare al server (in modo del tutto trasparente, ossia senza che l&#8217;utente se ne accorga) il valore di quel campo e restituire praticamente in tempo reale gli eventuali errori, senza dover ricaricare la pagina.</p>
<p><strong>Cos&#8217;è XMLHttpRequest:</strong></p>
<p>Come funziona tutto questo? Alla base di tutto quello che abbiamo fin qui detto risiede XMLHttpRequest, un&#8217;oggetto JavaScript in grado di effettuare le richieste sincrone o asincrone verso il server.</p>
<p>Non è mia intenzione addentrarmi nelle caratteristiche e nella sintassi di quest&#8217;oggetto, per questi aspetti vi rimando alle documentazioni tecniche che trovate in internet, un buon punto di partenza è<br />
<a href="http://xulplanet.com/references/objref/XMLHttpRequest.html" title="XMLHttpRequest" target="_blank"> http://xulplanet.com/references/objref/XMLHttpRequest.html</a> oppure potreste aspettare i prossimi post sull&#8217;argomento <img src='http://www.antonellocicchese.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Vorrei invece mettere in risalto il fatto che attualmente non esiste ancora uno standard per scrivere applicazioni AJAX, esistono infatti diverse implementazioni a seconda del browser e della piattaforma, quindi al momento lo sforzo maggiore che viene compiuto nel cimentarsi con AJAX è proprio quello di cercare di rendere gli script cross browser.</p>
<p><strong>La sicurezza in AJAX:</strong></p>
<p>Un ultimo aspetto che vorrei descrivere di AJAX riguarda la sicurezza, difatti se tra voi lettori, ci fosse qualche maniaco di sicurezza, con crisi di persecuzione come me, potrebbe subito chiedersi quali sono le possibili falle di sicurezza che un sistema come questo, nel quale il codice viene eseguito all&#8217;insaputa dell&#8217;utente, è in grado di aprire.</p>
<p>Ebbene anche a questo si è pensato, ed è stato adottato concettualmente lo stesso schema di sicurezza delle applet java, la cui esecuzione è limitata all&#8217;area di memoria nella quale vengono eseguite, così per ajax è stato imposto il limite del dominio, ossia le richieste sincrone o asincrone che siano, debbono essere limitate al dominio nel quale viene caricata la pagina, in questo modo non è possibile fare richieste ad un server remoto che potrebbe scaricare sul nostro computer codice malevolo.</p>
<p>Se da una parte questa limitazione ci garantisce da brutte sorprese, dall&#8217;altra però limita fortemente le possibilità di questo sistema, impedendoci ad esempio di usufruire dei molti web services messi a disposizione dai siti esterni al nostro, per questa ragione sono state introdotte diverse tecniche che fanno uso di proxy in grado di incaricarsi delle richieste verso siti remoti e che consentono di superare il problema.</p>
<p><strong>Pro e Contro AJAX:</strong></p>
<p>Per quanto riguarda gli aspetti positivi sono sicuramente da menzionare:</p>
<ul>
<li>Il traffico minimo: solo le parti coinvolte in un cambiamento vengono aggiornate</li>
<li>Accessibilità</li>
<li>Limitare le distrazioni con continui caricamenti</li>
<li>Interazione migliorata</li>
<li>In una parola sola Usabilità</li>
</ul>
<p>Ci sono però alcuni aspetti anche negativi come:</p>
<ul>
<li>Maggiore complessità nello sviluppo delle applicazioni</li>
<li>Inesistenza di uno standard per l&#8217;uso di queste tecnologie</li>
<li>Difficoltà di garantire agli utenti non in grado di sfruttare javascript perché utilizzano browser incompatibili un&#8217;esperienza comunque di qualità sul sito</li>
<li>Impossibilità di gestire la cronologia delle azioni eseguite</li>
<li>Impossibilità per i motori di ricerca di ricerca di indicizzare i dati gestiti tramite javascript</li>
</ul>
<p>Spero vivamente che l&#8217;introduzione ad AJAX risulti chiara, esistono ancora molti aspetti che però debbono essere trattati, e chissà magari li tratterò più in la, di sicuro a breve comincerò a pubblicare esempi ajax che sicuramente aiuteranno a capire come muoversi in quello che è il futuro del web, non mi rimane che dirvi stay tuned e vi lascio indicandovi la pagina di Wikipedia che parla di AJAX:<br />
<a href="http://it.wikipedia.org/wiki/AJAX" target="_blank" title="Wikipedia AJAX"> http://it.wikipedia.org/wiki/AJAX</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/12/11/introduzione-ad-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protezione dagli HotLink</title>
		<link>http://www.antonellocicchese.com/2006/12/02/protezione-hotlink/</link>
		<comments>http://www.antonellocicchese.com/2006/12/02/protezione-hotlink/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 22:21:05 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/12/02/protezione-hotlink/</guid>
		<description><![CDATA[Il furto di banda o hotlink è un problema che affligge tutti coloro i quali gestiscono almeno un sito web, e si tratta di quella esecrabile pratica adottata da utenti della rete e da altri webmaster di inserire nelle pagine dei loro siti, blog, forum e quant&#8217;altro le immagini del nostro sito linkandole direttamente senza [...]]]></description>
			<content:encoded><![CDATA[<p>Il <strong>furto di banda</strong> o <strong>hotlink</strong> è un problema che affligge tutti coloro i quali gestiscono almeno un sito web, e si tratta di quella esecrabile pratica adottata da utenti della rete e da altri webmaster di inserire nelle pagine dei loro siti, blog, forum e quant&#8217;altro le immagini del nostro sito linkandole direttamente senza scaricarle.</p>
<p>In questo modo praticamente ad ogni richiesta della loro pagina web viene consumata la nostra banda per scaricare le immagini rubate, si potrebbe considerare l&#8217;hotlinking come un vero e proprio furto, poiché la banda consumata dal ragazzaccio a noi proprietari di siti costa denaro (e molto!).</p>
<p>Per risolvere il problema esiste però una possibilità  che ci è offerta dal mod_rewrite di Apache, in pratica questa tecnica consente di bloccare le richieste esterne al nostro sito delle immagini, o di cambiare le richieste con altre richieste scelte da noi (quest&#8217;ultima frase è volutamente criptica perché non vi voglio rovinare la sorpresa).</p>
<p>Passiamo alla fase pratica <span id="more-54"></span> e nella directory che contiene le immagini del nostro spazio web creiamo un file .htaccess (il punto che precede il nome serve per nascondere il file dopo la sua creazione), e al suo interno inseriamo le righe:</p>
<pre lang="c">RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://yourdomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.yourdomain.com/.*$ [NC]
RewriteRule .*.(gif|GIF|jpg|JPG|bmp|BMP)$ - [F]</pre>
<p>Con queste poche linee di codice stiamo dicendo che:</p>
<ul>
<li><em><strong>riga 1</strong></em>: attiva il RewriteEngine che ci consente di riscrivere le url su Apache (utile anche per l&#8217;url rewrite)</li>
<li><em><strong>righe 2,3,4</strong></em>: controllano se l&#8217;url da cui è partita la richiesta fa parte di una delle tre ammesse come ad esempio yourdomain.com o www.yourdomain.com o ancora un path relativo o assoluto locale, altrimenti non prosegue a servire la richiesta, e chi ha linkato l&#8217;immagine senza il nostro permesso non riuscirà  a caricarla.</li>
<li><em><strong>riga 5</strong></em>: sono le estensioni dei file di cui si vuole bloccare l&#8217;hotlinking.</li>
</ul>
<p>Per quanto riguarda quei codici a fine linea sono delle opzioni che vengono accettate dal RewriteEngine, in particolare [NC] sta per <em>No Case</em>  ossia il controllo tra l &#8216;url del richiedente e l&#8217;url ammessa viene fatto senza preoccuparsi di lettere maiuscole o minuscole.</p>
<p>Ma con questo sistema si può fare molto di più, perché limitarci a non far visualizzare, a chi ci sta rubando le immagini, quello che ha linkato, quando potremmo cambiare la sua richiesta e mostrargli una immagine scelta da noi, magari con un testo che gli ricorda proprio che sta rubando le immagini dal nostro sito?</p>
<p>Ecco quindi il codice che consente di realizzare tutto ciò, come prima va inserito in un file .htaccess nella cartella delle immagini:</p>
<pre lang="c">RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://yourdomain.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.yourdomain.com/ [NC]
RewriteCond %{REQUEST_URI} !^/antiHotLink.jpg [NC]
RewriteRule .(gif|GIF|jpg|JPG|bmp|BMP)$ http://yourdomain.com/antiHotLink.jpg [R]</pre>
<p>Questo codice è praticamente identico al precedente ad eccezione della riga 6 nella quale diciamo che tutte le richieste ai file che non vogliamo siano linkati, fatte da siti esterni al nostro debbono essere redirette verso antiHotLink.jpg in questo modo se il &#8220;ladro&#8221; linka l&#8217;immagine con Topolino troverà  al suo posto l&#8217;immagine scelta da noi con un bel testo nel quale potrete inserire il vostro indirizzo in modo che suo malgrado vi farà  pubblicità .</p>
<p>Fate attenzione però che se l&#8217;immagine antiHotLink.jpg è sul vostro dominio, questa consumerà ancora la vostra banda, quindi per ottenere risultati migliori conviene che l&#8217;immagine sia su un secondo server e che in ogni caso sia di dimensioni (intendo il peso) ridottissime.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/12/02/protezione-hotlink/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Conversione colori da hex a rgb</title>
		<link>http://www.antonellocicchese.com/2006/12/01/conversione-colori-hex-rgb/</link>
		<comments>http://www.antonellocicchese.com/2006/12/01/conversione-colori-hex-rgb/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 14:28:40 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/12/01/conversione-colori-hex-rgb/</guid>
		<description><![CDATA[Vi presento un piccola funzione in grado di convertire un codice colore nel formato esadecimale (quello cioè utilizzato nei file html e css) in un codice RGB (Red, Green, Blue), restituendo un vettore le cui componenti corrispondono ai singoli colori.
Lo script è particolarmente utile quando si debbono utilizzare le librerie grafiche di PHP come ad [...]]]></description>
			<content:encoded><![CDATA[<p>Vi presento un piccola funzione in grado di convertire un codice colore nel formato esadecimale (quello cioè utilizzato nei file html e css) in un codice RGB (Red, Green, Blue), restituendo un vettore le cui componenti corrispondono ai singoli colori.</p>
<p>Lo script è particolarmente utile quando si debbono utilizzare le librerie grafiche di PHP come ad esempio la famosa GD Library, che in molte delle sue funzioni, richiede l&#8217;uso di colori nel formato RGB.</p>
<p>Questo è il codice della funzione:</p>
<pre lang="php">
/*----------------------------------------------*
* Funzione ColorConvert                        *
* Realizzato da: Antonello Cicchese            *
* http://www.antonellocicchese.com             *
* If you use this script                       *
* please keep this notice                      *
*----------------------------------------------*/

/*
Funzione per convertire un colore HEX in RGB
*/
function ColorConvert($color)
{
$red   = 100;
$green = 100;
$blue  = 100;
$col=array();
if( eregi( "[#]?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})", $color, $ret ) )
{
$red = hexdec( $ret[1] );
$green = hexdec( $ret[2] );
$blue = hexdec( $ret[3] );
}
$col[1]=$red;
$col[2]=$green;
$col[3]=$blue;
return($col);
}
?></pre>
<p>e questo è il link per scaricare lo script: <a title="Funzione php di conversione dei colori da hex a rgb" href="http://www.antonellocicchese.com/UserFiles/code/hex2rgb.php">hex2rgb.php download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/12/01/conversione-colori-hex-rgb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pubblicare email a prova di spam</title>
		<link>http://www.antonellocicchese.com/2006/11/30/pubblicare-email-a-prova-di-spam/</link>
		<comments>http://www.antonellocicchese.com/2006/11/30/pubblicare-email-a-prova-di-spam/#comments</comments>
		<pubDate>Thu, 30 Nov 2006 17:33:40 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/11/30/pubblicare-email-a-prova-di-spam/</guid>
		<description><![CDATA[Per tutti quanti coloro che desiderano pubblicare degli indirizzi email visibili sulle loro pagine web, ma sono terrorizzati dallo spam, questo semplice script in php vi consente di mettervi in parte al riparo da questo problema.
Quello che fa lo script è produrre un&#8217;immagine PNG al volo contenente l&#8217;indirizzo email da voi passato, inoltre per evitare [...]]]></description>
			<content:encoded><![CDATA[<p>Per tutti quanti coloro che desiderano pubblicare degli indirizzi email visibili sulle loro pagine web, ma sono terrorizzati dallo spam, questo semplice script in php vi consente di mettervi in parte al riparo da questo problema.</p>
<p>Quello che fa lo script è produrre un&#8217;immagine PNG al volo contenente l&#8217;indirizzo email da voi passato, inoltre per evitare che gli spider dediti alla raccolta di email riconoscano nel vostro codice html l&#8217;indirizzo, questo può essere invalidato con due tecniche <em>(che in realtà possono essere anche abinate insieme)</em>:</p>
<ol>
<li>con l&#8217;inserimento di un numero arbitrario di spazi bianchi all&#8217;interno dell&#8217;email</li>
<li>con la sostituzione del carattere @ con la stringa [___AT___] (<em>N.B. sono tre gli underscore prima e dopo AT</em>).</li>
</ol>
<p>Lo script prevede anche la possibilità di <strong>rendere lo sfondo dell&#8217;immagine trasparente</strong> in modo da adattarla allo sfondo della pagina sulla quale deve visualizzare l&#8217;immagine, per questa funzionalità <strong>basterà decommentare la linea 15 del file emailToImage.php</strong></p>
<p>Per quanto riguarda l&#8217;utilizzo del file vi propongo qui di seguito un breve codice HTML <em>(perdonatemi se non è un codice perfetto ma non è questo l&#8217;intento dell&#8217;articolo)</em>:
<p>Error: Could not open Test_emailToImage.html</p>
<p>mentre per quanto riguarda il codice dello script PHP <span id="more-52"></span> è questo
</p>
<pre lang="php">
/*---------------------------------------------     *
* EmailToImage.php                                  *
* Realizzato da: Antonello Cicchese                 *
* http://www.antonellocicchese.com                  *
* If you use this script                            *
* please keep this notice                           *
*-----------------------------------------------    */

function emailToImage ( $email )
{
if($email){
/* Ripulisco l'email dagli spazi se è stata scritta come nome    @    dominio.xx */
$email = ereg_replace(" ","",$email);
/* Produco un'email valida se è stata scritta come nome[___AT___]dominio.xx */
$email = ereg_replace("\[___AT___\]","@",$email);

$length = strlen($email);
$imgOutput = ImageCreateTrueColor($length*8,20);
$black = ImageColorAllocate($imgOutput, 0, 0, 0); /* Alloco il colore nero per il testo*/
$white = ImageColorAllocate($imgOutput, 255, 255, 255); /* Alloco il colore bianco per lo sfondo */
ImageFill($imgOutput,0,0,$white); /* Riempio lo sfondo con il bianco */
//ImageColorTransparent($imgOutput,$white); /* Se attivato rende lo sfondo trasparente */
ImageString($imgOutput, 3, $length/2, 3, $email, $black); /* Scrivo l'email centrata */
/* Produco l'immagine di output */
header("Content-type: image/png");
header("Content-Disposition:inline;filename=".$email.".png");
ImagePng($imgOutput);
ImageDestroy($imgOutput);
}
return;
}

if(isset($_GET['email'])) emailToImage($_GET['email']);
</pre>
<p>Come è facile vedere nel file html il trucco c&#8217;è e si vede, basta inserire nella pagina uno o più tag img il cui attributo  src punti verso il file php che produce l&#8217;immagine seguito dalla variabile &#8220;email&#8221;, preceduta da un ? e dal carattere &#038;, che contiene il valore dell&#8217;email da convertire in immagine, scritta in uno dei due formati consentiti, e verrà visualizzata l&#8217;immagine risultante.Questo è il link per scaricare il file html <a target="_blank" title="Pagina html di Test per email to Image" href="http://www.antonellocicchese.com/UserFiles/code/Test_emailToImage.html">Test_emailToImage.html</a><br />
e questo è il link per scaricare lo script php  <a title="Funzione per convertire testo in immagini" href="http://www.antonellocicchese.com/UserFiles/code/emailToImage.php">emailToImage.php</a>mentre questo è il risultato del suo utilizzo: <img title="Esempio di realizzazione immagine da email" alt="Esempio di realizzazione immagine da email" src="http://www.antonellocicchese.com/UserFiles/code/emailToImage.php?&#038;email=info%20%20%20%5B___AT___%5D%20antonellocicchese.com" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/11/30/pubblicare-email-a-prova-di-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google sitemap tool (english)</title>
		<link>http://www.antonellocicchese.com/2006/11/16/google-sitemap-tool-en/</link>
		<comments>http://www.antonellocicchese.com/2006/11/16/google-sitemap-tool-en/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 11:18:28 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/11/16/google-sitemap-tool-en/</guid>
		<description><![CDATA[(Italian version Google sitemap tool)
Hello, today I wanna tell you about my last python script (really nuts and bolts), called sitemaps.
With it you can build your website sitemaps, it works as a simple spider, it doesn&#8217;t produce a xml file but later maybe i can implement this function, for now it only produces a txt [...]]]></description>
			<content:encoded><![CDATA[<div align="right">(<a title="Google Site Map tool (italian)" href="http://www.antonellocicchese.com/2006/11/03/google-sitemap-tool/">Italian version Google sitemap tool</a>)</div>
<p><span class="imagelink"><img align="left" title="Web Graph" id="image41" alt="Web Graph" src="http://www.antonellocicchese.com/wp-content/uploads/2006/11/attweb.thumbnail.gif" /></span>Hello, today I wanna tell you about my last python script (really nuts and bolts), called sitemaps.<br />
With it you can build your website sitemaps, it works as a simple spider, it doesn&#8217;t produce a xml file but later maybe i can implement this function, for now it only produces a txt file.</p>
<p>This little spider, starts its crawling from a user specified starting page, and it moves all around the internal links it founds. At the end it produces a txt file with all the links, one per line, found during its crawl, this file could be submitted to Google SiteMaps and its syntax is legal.</p>
<p>The importans of using this kind of tool is that Google could index all your internal pages in less time, giving you the chance to increase your popularity.</p>
<p>As I said before this is really &#8220;nuts and bolts&#8221; but it&#8217;s a good starting point to write more sofisticated spider or web analysis tools.</p>
<p>The script core is a BFS (Breadth first search) visit  of the graph composed from  target web site internal links.</p>
<p>As usually if you have any comments, please don&#8217;t esitate, write them!</p>
<p>Here is the source code
<p>Error: Could not open sitemap.py</p>
<p>and here <a title="Google Sitemap tool" href="http://www.antonellocicchese.com/UserFiles/code/sitemap.py">sitemap.py</a> you can download the script.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/11/16/google-sitemap-tool-en/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google sitemap tool</title>
		<link>http://www.antonellocicchese.com/2006/11/03/google-sitemap-tool/</link>
		<comments>http://www.antonellocicchese.com/2006/11/03/google-sitemap-tool/#comments</comments>
		<pubDate>Fri, 03 Nov 2006 18:24:03 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/11/03/google-sitemap-tool/</guid>
		<description><![CDATA[(English version Google sitemap tool)
Ciao a tutti, quello che vi presento oggi è un semplicissimo script python, che consente a partire da un indirizzo internet specificato all&#8217;avvio, di costruire un file indice contenente tutti i link interni del sito analizzato.
Con questo strumento è possibile creare dei file utilizzabili con Google SiteMaps che vi aiuteranno a [...]]]></description>
			<content:encoded><![CDATA[<p align="right">(<a title="English version of Google sitemap tool" href="http://www.antonellocicchese.com/2006/11/16/google-sitemap-tool-en/">English version Google sitemap tool</a>)</p>
<p><img align="left" alt="Web Graph" id="image41" title="Web Graph" src="http://www.antonellocicchese.com/wp-content/uploads/2006/11/attweb.thumbnail.gif" />Ciao a tutti, quello che vi presento oggi è un semplicissimo script python, che consente a partire da un indirizzo internet specificato all&#8217;avvio, di costruire un file indice contenente tutti i link interni del sito analizzato.</p>
<p>Con questo strumento è possibile creare dei file utilizzabili con Google SiteMaps che vi aiuteranno a far indicizzare l&#8217;intero contenuto del vostro sito.</p>
<p>Lo script essendo stato scritto in meno di mezz&#8217;ora è veramente spartano, non prevede alcuna personalizzazione né produce in output un file xml compatibile con lo standard definito da google per le sitemaps, ma un semplice file di testo con l&#8217;elenco dei link.</p>
<p>È comunque un buon inizio sia per poter sviluppare tool più sofisticati per la produzione di sitemap sia per gettare le basi per un piccolo web crawler in python, perché quello che fa questo script è effettuare una visita BFS cioè in ampiezza, del grafo dei link interni di un sito.</p>
<p>Come al solito se avete commenti non esitate, anzi più ce ne sono migliore sarà il prodotto finale.</p>
<p>Clicca qui per il codice
<p>Error: Could not open sitemap.py</p>
<p>e clicca <a title="Google Sitemap tool" href="http://www.antonellocicchese.com/UserFiles/code/sitemap.py">sitemap.py</a> per scaricare il file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/11/03/google-sitemap-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django e Python su DreamHost.com</title>
		<link>http://www.antonellocicchese.com/2006/10/12/django-python-dreamhost/</link>
		<comments>http://www.antonellocicchese.com/2006/10/12/django-python-dreamhost/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 10:21:04 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/10/12/django-e-python-su-dreamhostcom/</guid>
		<description><![CDATA[ATTENZIONE: questa configurazione dopo i recenti aggiornamenti su dreamhost non è più consigliata, spesso causa crash nel sito che risulta irraggiungibile ritornando Errore 500, appena possibile pubblicherò una guida aggiornata&#8230;

Questa è una versione modificata rispetto alla guida ufficiale che potrete trovare sul wiki di dreamhost, difatti punta a farvi utilizzare non la versione preinstallata che [...]]]></description>
			<content:encoded><![CDATA[<p><strong><em>ATTENZIONE</em>: questa configurazione dopo i recenti aggiornamenti su dreamhost non è più consigliata, spesso causa crash nel sito che risulta irraggiungibile ritornando Errore 500, appena possibile pubblicherò una guida aggiornata&#8230;<br />
</strong></p>
<p>Questa è una versione modificata rispetto alla guida ufficiale che potrete trovare sul wiki di dreamhost, difatti punta a farvi utilizzare non la versione preinstallata che trovate sul vostro server di python ma una vostra installazione personalizzata, con tutte le librerie di cui potreste aver bisogno, il documento originale in inglese da cui sono partito per scrivere questo tutorial si trova all&#8217;indirizzo:<br />
<a target="_blank" href="http://forums.site5.com/showthread.php?t=10236"> http://forums.site5.com/showthread.php?t=10236</a><br />
ora non mi rimane che augurarvi una buona lettura.</p>
<p>Per iniziare dopo aver completato le fasi di registrazione su dreamhost e una volta che avrete ottenuto un account ssh questi sono i passi da seguire per installare Django su Dreamhost, facendo uso però di una versione personalizzata di python:</p>
<ol>
<li>collegatevi in ssh sul vostro server</li>
<li>una volta entrati nella vostra home digitate:
<pre lang="c">wget http://peak.telecommunity.com/dist/virtual-python.py
python virtual-python.py</pre>
<p>Questo creerà  nella vostra home diverse cartelle (bin, lib, &#8230;) che vi consentiranno di avere una installazione personalizzata di python.<br />
Il vantaggio di questo approccio è che vi consentirà  di avere a vostra disposizione le librerie più indicate per il vostro progetto proprio come se aveste un vostro server personale.</li>
<li>Adesso è necessario scaricare ez_setup:
<pre lang="c">wget http://peak.telecommunity.com/dist/ez-setup.py
~/bin/python ez_setup.py</pre>
<p>Adesso avete un&#8217;installazione completamente funzionante di python al vostro servizio, passiamo ora all&#8217;installazione delle librerire necessarie.</li>
</ol>
<p><strong>Librerie di python:</strong></p>
<ol>
<li>La prima libreria necessaria per il funzionamento di Django su Dreamhost è quella per interfacciare Python al dbms MySQL, consiglio vivamente di scaricarsi ogni volta l&#8217;ultima versione della libreria che trova a questo indirizzo  <a target="_blank" href="http://sourceforge.net/projects/mysql-python">http://sourceforge.net/projects/mysql-python</a> e al limite caricarla in ftp direttamente nella vostra home e seguire le indicazioni che vi sto per dare, per la sua installazione, ad eccezione della prima linea.
<pre lang="c">wget http://path.to.sourceforge.mirror/sourceforge/mysql-python/MySQL-python-1.2.1_p2.tar.gz
tar zxvf MySQL-python-1.2.1_p2.tar.gz
cd MySQL-python-1.2.1_p2
~/bin/python setup.py install</pre>
</li>
<li>Installiamo una libreria che è utile (e necessaria) soprattutto se usate le immagini nel vostro progetto e gli ImageField, si tratta della libreria PIL (Python Imaging Library):
<pre lang="c">wget http://effbot.org/downloads/Imaging-1.1.5.tar.gz
tar zxvf Imaging-1.1.5.tar.gz
cd Imaging-1.1.5
~/bin/python setup.py install</pre>
</li>
<li>Installiamo infine la libreria flup:
<pre lang="c">svn co http://svn.saddi.com/flup/trunk flup
cd flup
~/bin/python setup.py install</pre>
<p>a questo punto siete pronti per l&#8217;installazione vera e propria di Django.</li>
</ol>
<p><strong>Installazione di Django:</strong></p>
<ol>
<li>scarichiamo per prima cosa nella nostra home l&#8217;ultima versione di django, utilizzando  svn:
<pre lang="c">svn co http://code.djangoproject.com/svn/django/trunk/ django-src</pre>
</li>
<li>adesso rendiamo disponibile il path di django nella nostra installazione di python facendo un soft link:
<pre lang="c">ln -s ~/django_src/django ~/lib/python2.4/site-packages/django</pre>
</li>
<li>creiamo una directory nella vostra home che conterrà il progetto che andrete ad utilizzare:
<pre lang="c">mkdir ~/django_project</pre>
<p>All&#8217;interno di questa directory dovrete caricare il vostro progetto django con tutte le cartelle ad eccezione della cartella media.</li>
</ol>
<p><strong>Rendiamoci visibili:</strong></p>
<p>Nella vostra home oltre a tutte le cartelle che avete creato fin qui, ci dovrebbe essere una cartella con il nome uguale a quello del dominio che avete acquistato, in caso contrario vi consiglio di visitare il wiki di dreamhost per maggiori informazioni.</p>
<ol>
<li>Supponendo quindi che voi abbiate una cartella miodominio.com la prima cosa da fare è aggiungere le ultime due cartelle create nel PATH di sistema:
<pre lang="c">vim ~/.bashrc
export PYTHONPATH=$PYTHONPATH:$HOME/django_src:$HOME/django_projects
:wq
source ~/.bashrc</pre>
</li>
<li>bisogna creare un file di configurazione che vi permetta di interfacciare il vostro progetto Django con il modulo fcgi:
<pre lang="python">vim ~/miodominio.com/django.fcgi
#!/home/username/bin/python
import sys
sys.path += ['/home/username/django_src']
sys.path += ['/home/username/django_projects']
from flup.server.fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
import os os.environ['DJANGO_SETTINGS_MODULE'] = 'Progetto.settings'
WSGIServer(WSGIHandler()).run()

:wq</pre>
<p>ovviamente le parti con <strong><em>username</em></strong> e <strong><em>Progetto</em></strong> vanno sostituite con i vostri dati.<br />
<strong> (N.B.)</strong> Fate molta attenzione ad utilizzare nano o vim come editor se hanno il wordwrap, perch� in questo caso le linee troppo lunghe verranno spezzate ed il file sar�  inservibile.</li>
<li>ora va creato sempre nella directory miodominio.com il file che vi consentirà di utilizzare il mod_rewrite di Apache, quindi questo è quello che dovrete scrivere:
<pre lang="c">vim ~/miodominio.com/.htaccess
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^/stats/(.*)$ [OR]
RewriteRule ^.*$ - [L]
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(admin_media/.*)$ - [L]
RewriteCond %{REQUEST_URI} !(django.fcgi)
RewriteRule ^(.*)$ django.fcgi/$1 [L]  

:wq</pre>
<p>la riga</p>
<pre lang="c">RewriteCond %{REQUEST_URI} ^/stats/(.*)$ [OR]</pre>
<p>sta ad indicare la parte di file nella quale dovrete inserire tutte le url che non debbono essere gestite da django, quindi ad esempio l&#8217;url per accedere alle statistiche del sito <em>www.miodominio.com/stats</em></li>
<li>gli ultimi ritocchi da fare sono:
<pre lang="c">ln -s ~/django_src/django/contrib/admin/media ~/miodomionio.com/admin_media</pre>
<p>per rendere disponibile la grafica dell&#8217;amministrazione e caricare tramite ftp la cartella media del proprio progetto sempre dentro ~/miodominio.com</li>
<li>Ormai giunti alla fine di questo lungo lavoro, dovrete modificare il file di configurazione di django, settings.py in modo tale che rispetti il nuovo ordinamento delle directory, in particolare vanno modificate tutte le linee che si riferiscono alla cartella media indicando dove queste vanno ricercate, cioè ~/miodominio.com:
<pre lang="c">MEDIA_ROOT = '/home/username/miodominio.com/media/'

MEDIA_URL = 'http://www.miodominio.com/media/'

ADMIN_MEDIA_PREFIX = '/admin_media/'

TEMPLATE_DIRS = ( '/home/username/miodominio.com/media/template/',  )</pre>
</li>
<li>Per concludere dovrete &#8220;uccidere&#8221; tutti i processi attivi con python e django, ricordate questo passaggio è necessario ripeterlo tutte le volte che modificherete un file vitale di django come settings.py o urls.py, digitate quindi:
<pre lang="c">killall -9 /home/username/bin/python
killall -9 django.fcgi</pre>
</li>
</ol>
<p>Questo è veramente tutto, vi consiglio di leggere il tutorial su come utilizzare vim presente in questo blog all&#8217;indirizzo:  <a title="Tutorial Vim" href="http://www.antonellocicchese.com/2005/12/12/tutorial-vim/">http://www.antonellocicchese.com/2005/12/12/tutorial-vim/</a></p>
<p><strong><em>ATTENZIONE</em>: questa configurazione dopo i recenti aggiornamenti su dreamhost non è più consigliata, spesso causa crash nel sito che risulta irraggiungibile ritornando Errore 500, appena possibile pubblicherò una guida aggiornata&#8230;<br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/10/12/django-python-dreamhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tecnica dell&#8217;URL rewrite</title>
		<link>http://www.antonellocicchese.com/2006/09/04/tecnica-dellurl-rewrite/</link>
		<comments>http://www.antonellocicchese.com/2006/09/04/tecnica-dellurl-rewrite/#comments</comments>
		<pubDate>Mon, 04 Sep 2006 15:06:32 +0000</pubDate>
		<dc:creator>antonello</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WebMaster]]></category>

		<guid isPermaLink="false">http://www.antonellocicchese.com/2006/09/04/tecnica-dellurl-rewrite/</guid>
		<description><![CDATA[L&#8217;URL rewriting è quella tecnica che vi permette (server consentendo), attraverso l&#8217;uso di particolari istruzioni nei file .htaccess, di trasformare gli indirizzi dei vostri siti dinamici, umanamente illegibili ed ancor peggio inaffidabili per gli spider, in un formato utile all&#8217;indicizzazione nei motori e alla memorizzazione degli utenti.Per farvi capire cosa sono le pagine dinamiche, diciamo [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;<strong>URL rewriting</strong> è quella tecnica che vi permette (server consentendo), attraverso l&#8217;uso di particolari istruzioni nei file .htaccess, di trasformare gli indirizzi dei vostri siti dinamici, umanamente illegibili ed ancor peggio inaffidabili per gli spider, in un formato utile all&#8217;indicizzazione nei motori e alla memorizzazione degli utenti.Per farvi capire cosa sono le pagine dinamiche, diciamo che voi avete il vostro bel forum nella barra degli indirizzi presenta l&#8217;url in un formato caratterizzato dalla presenza di molte variabili (sono tutte quelle voci che seguono il ?) che via via che vi aggirate nel sito cambiano in funzione del punto dove vi trovate.</p>
<p>Dal punto di vista di quei simpatici ragnetti dei motori di ricerca questi url sono la cosa pi� pericolosa che esista, difatti nulla assicura allo spider che seguendo questi indirizzi riuscirebbe ad indicizzare correttamente il sito ad esempio supponiamo che voi abbiate un sito con due sole pagine index.php e spidertrap.php, e che per qualche motivo index contenga un link a spidertrap utlizzando un indirizzo nel formato sito/spidertrap.php?SID=84duryreyey  e spidertrap contenga un link a index sempre nel formato di prima, dove SID � la variabile che contiene l&#8217;id di sessione del vostro visitatore, quello che potrebbe succedere, ad ogni nuova visita degli spider, è che seguendo i link tra le due pagine, lo spider cadrebbe in un loop nel quale ad ogni nuovo accesso SID avrebbe un valore diverso da quello precedente, inducendo così lo spider a pensare di trovarsi difronte ad una pagina mai indicizzata, ottenendo così un&#8217;indicizzazione infinita.</p>
<p>La norma per gli spider è quindi quella di non considerare i parametri negli url, (o almeno tralasciarne buona parte) riducendo così la profondità di indicizzazione nei vostri siti.</p>
<p>Proprio in ragione di questo interviene l&#8217;url rewriting che consente di riscrivere gli indirizzi che contengono parametri in indirizzi nel formato: sito/param1/param2/param3/pippo.php  o in quasi qualunque altra forma vi venga in mente, consentendo così agli spider di attraversare tutto il vostro sito, oltre che ai vostri utenti di rintracciare una pagina interna senza diventare matti.</p>
<p>Il post potrei dichiararlo concluso qui, non mi metterò a spiegare come vanno scritte le regole per l&#8217;url rewrite, ma se qualcuno fosse particolarmente interessato potrei pensare di scrivere un nuovo post.</p>
<p>Consiglio a tutti gli interessati di leggersi questo articolo se potete usare .htaccess sul vostro server:</p>
<p><a href="http://pro.html.it/articoli/id_219/idcat_28/pag_3/pag.html" target="_blank">http://pro.html.it/articoli/id_219/idcat_28/pag_3/pag.html</a></p>
<p>mentre quest&#8217;altro se non vi viene concesso:</p>
<p><a href="http://freephp.html.it/articoli/view_articolo.asp?id=61" target="_blank">http://freephp.html.it/articoli/view_articolo.asp?id=61</a></p>
<h5><em>Originariamente questa testo è stato pubblicato da me sul forum del sito AlVerde.net, a questo indirizzo potrete leggere la versione originale:<br />
<a href="http://www.alverde.net/forum/topic.asp?TOPIC_ID=6866&amp;whichpage=1" target="_blank">http://www.alverde.net/forum/topic.asp?TOPIC_ID=6866&amp;whichpage=1</a></em><em> </em></h5>
]]></content:encoded>
			<wfw:commentRss>http://www.antonellocicchese.com/2006/09/04/tecnica-dellurl-rewrite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
