Bienvenidos sean a este post, hoy veremos el codigo del archivo mencionado en el titulo.
En este caso debemos ir al directorio webroot y en este debemos crear un archivo al cual llamaremos .htaccess, nuestro siguiente paso sera abrir este archivo y le agregaremos este primer codigo:
Options –Indexes
Esto evitara que los usuarios pueden acceder al listado de nuestros directorios donde esta la pagina siempre y cuando no exista una pagina index, despues agregaremos el siguiente bloque:
<IfModule mod_rewrite.c>
</IfModule>
Este condicional verifica si se usa el modulo mod_rewrite, el cual nos servira para poder reescribir URL en la marcha, nos ayudara a crear una pagina donde por ejemplo nos permite convertir:
index.php?page
en:
/page
Dentro de este bloque primero agregaremos este codgo:
RewriteEngine On
RewriteBase /
Este habilitara el motor de este modulo y la segunda establece la cual es la raiz de nuestra pagina, debajo de estas lineas agreguemos la siguientes:
# Descomenta la regla inferior para forzar al HTTPS (SSL)
RewriteCond %{HTTPS} !on
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Aqui comenzaremos con la configuracion de las reglas de reescritura del modulo, tal como indica el comentario si tenemos un servidor que ofrece la posibilidad de usar a SSL podemos descomentar la ultima linea para forzar el uso del protocolo, luego agregaremos el siguiente codigo seguido al anterior:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.+)/$ $1 [R=307,L]
Esto permitira que se ignoren todas las barras asi como directorios y archivos existentes permitiendo solo URL dinamicos, es decir URL que no existen como archivos fisicos, pero la ultima regla envia todas las solicitudes a index.php?$1 donde $1 es la primera solicitud despues de / en la URL solicitada, la instruccion ReWriteCond equivale a decir que ejecutes un RewriteRule solo si es verdadera, despues agregaremos el siguiente bloque:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Estas nos permitiran que todos los archivos y directorios se puedan mostrar directamente, por ultimo agregaremos la siguiente linea:
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
Aqui volvemos a utilizar a ReWriteRule pero esta vez para decirle que si la solicitud realizada encaja con la expreson ^(.*)$, la cual equivale a cualquier URL solicitada excepto por la raiz del servidor, por ejemplo si hacemos una solicitud a contacto se hara de la siguiente forma:
index.php?contacto
Si volvemos a la linea que ingresamos ultimo, esta posee una opcion llamada QSA la cual le dice al motor de reescritura que debe agregar una parte de la cadena de la consulta en la cadena de substitucion a la existente en lugar de reemplazarla, veamos como quedo nuestro primer codigo del archivo:
.htaccess
Options –Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Descomenta la regla inferior para forzar al HTTPS (SSL)
RewriteCond %{HTTPS} !on
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.*)/$
RewriteRule ^(.+)/$ $1 [R=307,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
</IfModule>
En resumen, hoy hemos visto como crear un archivo para modificar las reglas de nuestras paginas, esto nos permitira unas acciones propias mas alla de las establecidas en el servidor, en los proximos posts iremos viendo porque es necesaria esta modificacion, y es bueno tener una base que se puede implementar para otros proyectos propios, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
