La configuracion de un servidor apache se establece basicamente a traves del fichero http.conf. Este fichero determina el comportamiento que tendra el servidor antes las peticiones que reciba.
Este fichero es modificado por el administrador del sistema, los usuarios no pueden variar sus directivas, que asi se llaman los parametros de configuracion.
Pero no todo esta perdido. El fichero .htaccess, permite que el administrador del sitio web personalice su pagina web, haciendo que el servidor se comporte de manera especial, solo para esa pagina web.
¿Cómo funciona .htaccess?
Cuando el servidor recibe una peticion, mira primero si existe el fichero .htaccess en la raiz de nuestra pagina o el directorio en el que se encuentra la pagina y superiores. Si lo encuentra, lo lee y aplica las directivas que encuentre, si estas son validas. Si encontrara algun error en estas directivas generara un error " 500 Internal Error ".
¿Cómo edito este fichero?
Es un fichero en ASCII puro, asi que podemos editarlo con cualquier editor , como el "notepad" de Windows. Es importante notar que algunas opciones que se establecen en el panel de control, hacen uso de este fichero (Redirecciones, Hotlinks, Directorios protegidos, etc). Asi no basta con editar un archivo .htacces y subirlo a la carpeta que deseemos. Debemos asegurarnos que no exista ya, y si esta, bajarnoslo a nuestro ordenador, añadir las directivas que queramos, y volverlo a subir.
La mejor manera es hacer uso del Panel de Control. Si encontramos ese fichero, desde el propio Administardor de archivos, podemos editarla y guardarlo. Tambien podemos crear uno, si no existe.
¿A través de mi programa FTP no veo este fichero?
En linux, los ficheros que comienzan por un punto son ocultos. Algunos programas de FTP los presentan y otros no.
¿Qué estructura tiene?
Es un fichero en ASCII puro. Las lineas precedidas por # son comentarios y las directivas pueden ser :
De linea : directiva argumento
De bloque :
OtrasDirectivas
¿Qué directivas puedo incluir?
Las directivas que podemos incluir son la mayoria de las que pudieramos incluir en el fichero de configuracion general de Apache .Tambien depende de los modulos cargados. Lo mejor es consultar la documentacion de apache :
http://httpd.apache.org/docs/mod/directives.html
En cada una de las directivas que encontramos, en la opcion Context : encontraremos si en su ambito de aplicacion, se encuentra .htaccess
Por ejemplo, la documentacion dice sobre DirectoryIndex :
Syntax: DirectoryIndex local-url [local-url] ...
Default: DirectoryIndex index.html
Context: server config, virtual host, directory, .htaccess
Override: Indexes
Status: Base
Module: mod_dir
En Context señala que su albito de aplicacion incluye .htaccess, indicandonos que podemos usarlo.
En cualquier caso, veamos como aplicar algunas directivas :
-- Paginas de error --
Podemos dirigir al usuario a las paginas que queramos cuando se produzca un error (Pagina no encontrada, Pagina prohibida, etc)
La directiva que usamos es " ErrorDocument numero_de_error /pagina_a_redirigir
Ejemplo para manejar los errores 404 y 500
Código:
ErrorDocument 404 /errores/error_404.html
ErrorDocument 500 /errores/error_500.html
Mas informacion en :
http://httpd.apache.org/docs/mod/core.html#errordocument
-- Cabeceras Expire --
Podemos usar estas directivas para generar cabeceras Expire y saltarnos el cache de algunos proveedores. Por ejemplo, evitar
que el proxy de Telefonica cachee nuestra pagina y no veamos los cambios que apliquemos a nuestra pagina
Son tres "ExpiresActive, ExpiresDefault y ExpiresByType"
Ejemplo para caducar los graficos en una semana y las paginas HTML en un dia
Código:
ExpiresActive On
ExpiresByType image/gif A86400
ExpiresByType image/png A86400
ExpiresByType image/jpg A86400
ExpiresDefault "modification plus 1 day"
Mas informacion en : http://httpd.apache.org/docs/mod/mod_expires.html
-- Diferente pagina de inicio --
Usamos la directiva "DirectoryIndex"
Ejemplo
Código:
DirectoryIndex inicio.php
Mas informacion : http://httpd.apache.org/docs/mod/mod_dir.html#directoryindex
-- Permitir o negar el acceso a nuestra pagina --
Las directivas son "allow y deny"
Ejemplo para negar el acceso a determinadas direcciones
Código:
allow from all # Permite a todos
deny from 100.12.12.12 # Deniega a esta IP
deny from 100.12.12 # deniega a este rango
deny from apache.org # deniega a este host
deny from crack.dominio.com # deniega a este subdominio
Código:
# ejemplo muy restictivo
deny from all
allow from 123.123.123.1 # Solo permite el acceso una IP
Mas informacion en : http://httpd.apache.org/docs/mod/mod_access.html
-- Reescribir la URL --
Una poderosa y no facil herramienta para manipular URLs . Nuestro panel de control la usa para los Hotlinks (Evitar que otros servidores roben material de nuestra pagina)
Ejemplo de hotlink :
RewriteEngine on
RewriteCond % !^http://dominio.com/.*$ [NC]
RewriteCond % !^http://www.dominio.com/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC]
Protejemos las extensiones jpg|jpeg|gif|png|bmp de referers que no sean dominio.com o www.dominio.com
Mas informacion en : http://httpd.apache.org/docs/misc/rewriteguide.html
NOTA IMPORTANTE : Si trabaja con las extensiones FrontPage, no edite el fichero a mano, ya que FrontPage usa estos ficheros para su funcionamiento.