Yii2 – Redirecciones y Htaccess

Hoy toca incluir cómo hacer las redirecciones y htaccess en yii2 para que fácilmente se puedan hacer urls amigables. Lo saqué de está página (aunque hay unas modificaciones mías en el archivo web.php).

Básicamente es necesario hacer 3 pasos (recordar que {root} es el lugar donde hemos creado la plantilla básica:

Paso 1: Crear fichero {root}/.htaccess (para redireccionarlo todo a la carpeta web menos aquellos ficheros o directorios que existan)

<IfModule mod_rewrite.c>
 Options +FollowSymlinks
 RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} ^/.*
 RewriteRule ^(.*)$ web/$1 [L]
 RewriteCond %{REQUEST_URI} !^/web/
 RewriteCond %{REQUEST_FILENAME} !-f [OR]
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^.*$ web/index.php
</IfModule>

Paso 2: Crear fichero {root}/web/.htaccess (para que pase todo por el index.php, menos como en el caso anterior aquellos ficheros o directorios que existan)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Paso 3: Actualizar fichero {root}/config/web.php (indicar a yii2 que se van a mostrar urls amigables y definir las primeras reglas). Estas reglas te permitirán también pasar un parámetro por get.

'request' => [
    'baseUrl' => '',
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '' => 'site/index',
        //'<action>'=>'site/<action>',
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+><action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+><action:\w+>'=>'<controller>/<action>',
    ],
],

¿Qué es el hotlinking? Ventajas y cómo evitarlo

Hoy hablaremos de uno de los problemas que más de cabeza tienen a los webmasters de las páginas web: el hotlinking

¿En qué consiste el hotlinking?
Hotlinking es copiar en tu blog o página web un enlace directo a una foto/vídeo de una web que no es nuestra.

¿Qué ventajas tiene hacer hotlinking para el que lo practica?

Si yo lo estuviera haciendo tendría varias ventajas fundamentales:

  • El ancho de banda de la imagen corre a cuenta del usuario que la tiene la imagen alojada en su servidor, no en el mío.
  • No es necesario alojar la imagen en mi servidor, con el consiguiente ahorro de espacio en el servidor.
  • No infrinjo según las leyes estadounidenses ninguna ley de derechos de autor, ya que sólo estaría apuntando a otra página desde la mía (esta otra página sí que podría tener problemas con la justicia)

¿Qué otros nombres recibe el hotlinking?

Se llama también hotlinking, leeching, piggy-backing, direct linking, offsite image grabs.

¿Cómo se puede evitar?

Se puede evitar modificando el fichero .htaccess de nuestro sitio introduciendo el siguiente código.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?miweb.com(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|zip|rar|mp3)$ – [F,NC]