Algo muy importante en el desarrollo de una página web es un buen archivo .htaccess, pero cierto es que en ninguna web ni blog se encuentra un tutorial que englobe todas las opciones de htaccess.
Es por ello que me he propuesto crear este tutorial que poco a poco iré ampliando. ¡Comenzamos!
Para empezar, el archivo .htaccess es un archivo oculto que gestiona el servidor para dar permisos, hacer redirecciones, aumentar la seguridad de tu web, etc. Este archivo es muy delicado y no acepta ningún tipo de error, ya que de él depende la seguridad de nuestro servidor. Por lo tanto, la sintaxis debe de ser correcta. A continuación empiezo a detallar uno por uno los distintos comandos/códigos que acepta este archivo y para qué son.
1 – +FollowSymlinks:
Esta opción permite que las carpetas y/o archivos fuera de la carpeta del servidor Apache (Por defecto /www/) puedan ser vistos y ejecutados por este. Esta función se añade siempre en la primera linea del archivo. Podéis ver como la inmensa mayoria de gestores de contenido (CMS) lo usan.
Aquí teneis el codigo a copiar:
Options +FollowSymlinks
2 – RewriteEngine:
RewriteEngine simplemente sirve para activar o no las redirecciones a través de Htaccess. ¿Con qué utilidad? Pues para crear urls amigables o páginas de error, por ejemplo. Este comando tienes que colocarlo en una linea anterior a las redirecciones para que surja efecto.
Aquí teneis el codigo a copiar:
Options +FollowSymlinks
3 – RewriteRule:
Como su nombre indica «RewriteRule», es una regla de ‘redirección’, que nos sirve para enmascarar la dirección real y crear así direcciones más amigables. Si tenemos una Url tal como esta:
EJ: http://www.midominio.com/index.php?cat=programacion&name=tutorial-htacess
La podremos convertir en una url más sencilla, tal que así:
EJ: http://www.midominio.com/programacion/tutorial-htacess/
Para ello primero hay que entender la sintaxis de esta función, que es la siguiente:
RewriteRule ^programacion/tutorial-htaccess/?$ index.php?id=$1&name=$2 [L]
Lo primero el nombre de la función «RewriteRule«, despues «^» que indica cuando empieza la url de la redirección, luego la ruta tal cual la escribiríais en el navegador (Según el ejemplo anterior sería: programación/tutorial-htacess/), OPTATIVO: «?» se pondría después si quieres que la url lleve al mismo sitio tanto si tiene «/» al final como si no (Ver anexo1), a continuación «$» que indica cuando termina la url de la redireción. Después de esto va la ruta real del archivo que ha de ejecutar el servidor, en este caso es index.php y las variables PHP que utilicéis. Según el ejemplo anterior: index.php?cat=$1&name=$2. Para terminar, explico que $1 y $2 indica la posición de la variable en la url y puedes poner tantas como necesites.
Las redirecciones por RewriteRule pueden ser dinámicas o estáticas, ello dependerá de la necesidad de cada uno. Si tu página tiene 500 páginas, no es factible hacer las redirecciones de forma estática, ya que nos llevaría muchísimo tiempo y sería contraproducente. Volvamos a poner un ejemplo:
RewriteRule ^([a-zA-Z-0-9]+)/([a-zA-Z-0-9]+)/?$ index.php?id=$1&name=$2 [L]
De esta forma, nuestra url sería dinámica, podría contener todo tipo de caracteres alfanuméricos y guiones, gracias al paréntesis. Si en dicho paréntesis solo colocamos ([a-z]+) se permitirán caracteres entre a y z minúscula únicamente, lo mismo pasa con las mayúsculas si ponemos ([A-Z]+) y con los números si ponemos ([0-9]+). El + final indica que el patrón puede repetirse una o más veces, si no existiese el numero máximo de caracteres que permitiría es de uno. Para ampliar esta información podéis consultar Regular Expresion en Wikipedia.
Esto es todo por el momento. Seguiré publicando el resto de funciones más adelante.
Espero que esta información te haya servido de ayuda, si necesitas algo contacta conmigo a través de la sección de contacto.
Saludos!
Anexos
1: Al añadir «?» despues de / informas al htaccess de que la dirección puede llevar o no la última barra /.
EJ: http://www.midominio.com/programacion/tutorial-htacess/ y http://www.midominio.com/programacion/tutorial-htacess llevarían a la misma página.