<?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>nordri&#039;s Blog &#187; htaccess</title>
	<atom:link href="http://www.muspells.net/blog/tag/htaccess/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.muspells.net/blog</link>
	<description>Estamos trabajando en ello...</description>
	<lastBuildDate>Wed, 04 Jan 2012 16:01:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Añadiendo marcas de agua al vuelo para evitar hotlinking</title>
		<link>http://www.muspells.net/blog/2011/02/anadiendo-marcas-de-agua-al-vuelo-para-evitar-hotlinking/</link>
		<comments>http://www.muspells.net/blog/2011/02/anadiendo-marcas-de-agua-al-vuelo-para-evitar-hotlinking/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 19:37:57 +0000</pubDate>
		<dc:creator>Fede Diaz</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[hotlinking]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod rewrite]]></category>

		<guid isPermaLink="false">http://www.muspells.net/blog/?p=665</guid>
		<description><![CDATA[A partir de una entrada que aparecía esta mañana en Tu Receta, he pasado el día intentando mejorar el sistema. Ellos proponen que cuando alguien enlace directamente a una foto de tu sitio, cambiar la url mediante mod_rewrite hacía otra imagen para que en el sitio sólo pueda mostrar una imagen con algún mensaje o [...]]]></description>
			<content:encoded><![CDATA[<p>A partir de una entrada que aparecía esta mañana en <a href="http://tureceta.es">Tu Receta</a>, he pasado el día intentando mejorar el sistema. Ellos proponen que cuando alguien enlace directamente a una foto de tu sitio, cambiar la url mediante <em>mod_rewrite</em> hacía otra imagen para que en el sitio sólo pueda mostrar una imagen con algún mensaje o similar, pero no las imágenes originales. Recordé que mi amigo Migue había pasado por eso y lo resolvió, así que empece a investigar para ver cómo podría solucionarlo.</p>
<p><strong>Requerimientos:</strong></p>
<ol>
<li>Tener activado mod_rewrite en nuestro servidor</li>
<li>PHP5-GD para trabajar con imágenes</li>
<li>Una imagen que será la marca de agua</li>
</ol>
<p>Lo primero que hacemos es añadir a nuestro <em>.htaccess</em> las nuevas reglas para <em>mod_rewrite</em> que son las básicamente las mismas que en Tu Receta pero cambiamos la <em>RewriteRule</em> así:</p>
<pre>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.muspells.net/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.muspells.net$      [NC]
RewriteRule ^(.*)\.(gif|jpg|png)$ image_script.php?image=$1\.$2   [R]
</pre>
<p>Cambiamos la regla de reescritura para que apunte a un script de PHP donde editaremos al vuelo la imagen para devolverla al REFERER con una marca de agua.</p>
<p>Hemos llamado al script <em>image_script</em> y lo hemos colocado en la raíz de documentos,</p>
<pre>
&lt;?php

// En WordPress por ejemplo las imagenes se guardan en directorios,
// necesitamos el PATH completo a la imagen.
$URI = $_GET['image'];
$URI_PARSER = explode ('/', $URI);
$image = "/path/to/DocumentRoot/".$URI_PARSER[count($URI_PARSER) - 1];

switch (TRUE) {
   case stristr($image,'jpg'):
      $photoImage = ImageCreateFromJpeg("$image");
      break;
   case stristr($image,'gif'):
      $photoImage = ImageCreateFromGIF("$image");
      break;
   case stristr($image,'png'):
      $photoImage = ImageCreateFromPNG("$image");
      break;
}

ImageAlphaBlending($photoImage, true); 

// Añadimos aquí el fichero de marca de agua.
$logoImage = ImageCreateFromPNG("watermark.png");
$logoW = ImageSX($logoImage);
$logoH = ImageSY($logoImage); 

// Los 1's representan el margen con el margen superior izquierdo
ImageCopy($photoImage, $logoImage, 1, 1, 0, 0, $logoW, $logoH); 

ImagePNG($photoImage); // output to browser 

ImageDestroy($photoImage);
ImageDestroy($logoImage);
?&gt;
</pre>
<p>El script colocará la imagen <strong>watermark.png</strong> en la esquina superior izquierda.</p>
<p>Cuando accedemos a alguna imagen de nuestro sitio de forma legítima la veremos así:</p>
<div id="attachment_668" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.muspells.net/blog/wp-content/uploads/2011/02/gnu.png"><img src="http://www.muspells.net/blog/wp-content/uploads/2011/02/gnu-300x293.png" alt="gnu" title="gnu" width="300" height="293" class="size-medium wp-image-668" /></a><p class="wp-caption-text">GNU</p></div>
<p>Mientras que si accedemos enlazando directamente la veremos así:
<p>
<a href="http://www.muspells.net/blog/wp-content/uploads/2011/02/gnu.wm_.png"><img src="http://www.muspells.net/blog/wp-content/uploads/2011/02/gnu.wm_-300x293.png" alt="gnu" title="gnu.wm" width="300" height="293" class="aligncenter size-medium wp-image-669" /></a></p>
<p><strong>Fuentes:</strong></p>
<ol>
<li><a href="http://tureceta.es/evitar-hot-linking-con-htaccess/">Tu Receta: Evitar Hot-linking con .htaccess</a></li>
<li><a href="http://www.simplemachines.org/community/index.php?topic=2441.0">El script</a></li>
<div style="height:33px;" class="really_simple_share robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_like" style="width:100px;">
				<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.muspells.net%2Fblog%2F2011%2F02%2Fanadiendo-marcas-de-agua-al-vuelo-para-evitar-hotlinking%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;colorscheme=light&amp;send=false&amp;height=27" 
						scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:27px;" allowTransparency="true"></iframe>
				</div><div class="really_simple_share_twitter" style="width:110px;">
					<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
						data-text="Añadiendo marcas de agua al vuelo para evitar hotlinking. via @nordri" data-url="http://www.muspells.net/blog/2011/02/anadiendo-marcas-de-agua-al-vuelo-para-evitar-hotlinking/" 
						data-via=""  ></a> 
				</div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.muspells.net/blog/2011/02/anadiendo-marcas-de-agua-al-vuelo-para-evitar-hotlinking/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apache, vhosts, htaccess, AllowOverride y FileInfo</title>
		<link>http://www.muspells.net/blog/2009/10/apache-vhosts-htaccess-allowoverride-y-fileinfo/</link>
		<comments>http://www.muspells.net/blog/2009/10/apache-vhosts-htaccess-allowoverride-y-fileinfo/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 17:09:50 +0000</pubDate>
		<dc:creator>Fede Diaz</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[AllowOverride]]></category>
		<category><![CDATA[FileInfo]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[vhosts]]></category>

		<guid isPermaLink="false">http://www.muspells.net/blog/?p=85</guid>
		<description><![CDATA[Disponemos de un servidor Apache con sitios virtuales y queremos definir las páginas de error que se mostraran en caso de los 404, 500, etc. Para ello editamos el archivo de configuración del sitio virtual en /etc/apache2/sites-available/ y en la directriz Directory establecemos el valor de AllowOverride a FileInfo de manera que nuestra configuración quedará [...]]]></description>
			<content:encoded><![CDATA[<p>Disponemos de un servidor Apache con sitios virtuales y queremos definir las páginas de error que se mostraran en caso de los 404, 500, etc.</p>
<p>Para ello editamos el archivo de configuración del sitio virtual en <em>/etc/apache2/sites-available/</em> y en la directriz <em>Directory</em> establecemos el valor de <em>AllowOverride</em> a <em>FileInfo</em> de manera que nuestra configuración quedará como sigue:</p>
<pre>
ServerName URL
ServerAdmin user@localhost
DocumentRoot /var/web/
&lt;Directory /var/web/&gt;
Options FollowSymLinks Multiviews
AllowOverride FileInfo
Order allow,deny
allow from all
&lt;/Directory&gt;
</pre>
<p>Así, todos los parámetros de configuración de Apache que definamos en la raíz de documentos (DocumentRoot) dentro del archivo .htaccess sobreescribiran los definidos en el fichero de configuración del servidor. En nuestro caso, <em>FileInfo</em> sólo contempla <em>DocumentError</em>.</p>
<p>Ahora podemos definir los mensajes o acciones a realizar en caso de error con la siguiente sintaxis:</p>
<pre>ErrorDocument [code] [action]</pre>
<p>Donde <strong>action</strong> puede ser:</p>
<ol>
<li>Un texto a mostrar entre comillas</li>
<li>Una re-dirección a una url interna del servidor</li>
<li>Una re-dirección a una url externa del servidor</li>
</ol>
<p>Un ejemplo de la documentación de Apache</p>
<pre>ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 "Sorry, our script crashed. Oh dear"
ErrorDocument 500 http://xxx/
ErrorDocument 404 /Lame_excuses/not_found.html
ErrorDocument 401 /Subscription/how_to_subscribe.html
</pre>
<div style="height:33px;" class="really_simple_share robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_like" style="width:100px;">
				<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.muspells.net%2Fblog%2F2009%2F10%2Fapache-vhosts-htaccess-allowoverride-y-fileinfo%2F&amp;layout=button_count&amp;show_faces=false&amp;width=100&amp;action=like&amp;colorscheme=light&amp;send=false&amp;height=27" 
						scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:27px;" allowTransparency="true"></iframe>
				</div><div class="really_simple_share_twitter" style="width:110px;">
					<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
						data-text="Apache, vhosts, htaccess, AllowOverride y FileInfo. via @nordri" data-url="http://www.muspells.net/blog/2009/10/apache-vhosts-htaccess-allowoverride-y-fileinfo/" 
						data-via=""  ></a> 
				</div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.muspells.net/blog/2009/10/apache-vhosts-htaccess-allowoverride-y-fileinfo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

