.htaccess

.htaccess es un archivo de texto oculto que contiene una serie de directivas para el servidor Apache. Cuando un cliente solicita un archivo al servidor, este busca desde el directorio raíz hasta el subdirectorio que contiene el archivo solicitado el archivo .htaccess y tiene en cuenta estas reglas antes de proceder con la petición, es decir, se aplican las normas especificadas al directorio en el que se encuentre .htaccess y los directorios por debajo de él.

Ejemplos de usos para .htaccess pueden ser restringir el acceso a determinados archivos, impedir el listado de los archivos de un directorio, redireccionar, personalizar las páginas de error o impedir el acceso a determinadas IPs o rangos de IP.

Impedir el listado del contenido de un directorio
Cuando se intenta acceder a un directorio, en ausencia de un archivo de índice, Apache muestra por defecto el contenido del directorio. Si queremos impedir al usuario ver el contenido de un directorio, bastaría con crear un archivo de índice, por ejemplo index.html, pero existe una solución más elegante mediante la directiva Options. Basta crear un archivo .htaccess que contenga la línea:
Options -Indexes
También podríamos utilizar la directiva DirectoryIndex, que especifica qué archivos actúan como índice por defecto, y que archivo mostrar en el caso de que estos no se encuentren. Por ejemplo la línea:
DirectoryIndex index.php index.html index.htm /prohibido.php
indicaría al servidor que debe buscar los archivos index.php, index.html o index.htm, en ese orden, y en el caso de no encontrar ninguno de ellos, cargar el archivo prohibido.php.

Redireccionar el tráfico web
Si nos encontramos con la necesidad de enviar al usuario a una determinada dirección web cuando pida una cierta página, por ejemplo porque la hallamos movido, podemos utilizar la directiva Redirect de Apache.

Redirect /antiguo.php http://mundogeek.net/otros/nuevo.php

Crear un mensaje de error personalizado
Este es uno de los usos más frecuentes para el archivo .htaccess. En ocasiones se pueden producir errores que deben ser notificados al usuario, por ejemplo en el caso de que se intente acceder a una página que no existe, bien por un fallo del usuario al introducir la url, o bien porque la página haya sido movida o eliminada. Estos mensajes suelen estar escritos en inglés, no ofrecen demasiada información al usuario, y rompen la estética general del sitio, por lo que es imprescindible personalizarlos.

Para lograrlo utilizamos la directiva ErrorDocument, del que tenemos un ejemplo a continuación:
ErrorDocument 403 "Acceso denegado
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

Los códigos de error 403, 404 y 500 son los más comunes, y se producen respectivamente cuando no se tiene permiso para acceder a una página, cuando no se encuentra un archivo y debido a un error interno del servidor.

La primera línea indica al servidor que muestre el mensaje ‘Acceso denegado’ siempre que se produzca el error 403. Las otras líneas ilustran la forma de indicar al servidor que muestre una determinada página cuando se produzca un error (se puede usar direcciones relativas o absolutas).

75 comentarios en «.htaccess»

  1. Personalmente, el que más me gusta y útil veo es el mod_rewrite. Con él se pueden hacer cosas como redireccionar a un cliente según la página que pida o el cliente (navegador) que use, o desde la página que accede y/o/u ae/ae muchas más cosas o combinaciones de varias.

  2. Personalmente, el que más me gusta y útil veo es el mod_rewrite. Con él se pueden hacer cosas como redireccionar a un cliente según la página que pida o el cliente (navegador) que use, o desde la página que accede y/o/u ae/ae muchas más cosas o combinaciones de varias.

    sin ir más lejos zootropo.f2o.org ya está redireccionado aquí usando mod rewrite

    Psss: Mira el enlace “Home” de arriba del menu 😉

    lo del home no es culpa mía, sino del tema. en fin. ahora lo cambiaré

  3. Yo iba a decir… «Yo tambien lo uso para redireccionar del metodo que usaba la anterior version del script a la nueva», pero me vino a la mente que lo hice de la forma mas chapucera posible y puse un fichero que redireccionaba con codigo PHP… como dios manda 😀

    1. :S … se nota que no conoces bien el proposito del (.htaccess) … Apache es un usuario que debe de tener acceso a todo, si le restringes el acceso a apache al folder root de tu webapp, entonces COMO RAYOS VA A ACCEDER AL SERVICIO???? aajjajajajaj XD … (.htaccess) sirve para reestringir ciertos eventos DE APACHE… ponte a estudiar mijo antes de contestar babosadas ignorantes…

  4. para restringir el acceso a un directorio mil veces mas facil: abres un programa ftp y cambias el chmod de la carpeta a 773 y ya esta 😀

    pero entonces no puedes restringir el acceso a tal o cual ip, o grupo, o ponerle contraseña. ahí no entra ni dios
    o puede que dios sí, si está en todas partes

  5. Pingback: Desvaríos de Moisés » Blog Archive » Protegiendo directorios web mediante .htaccess

  6. Pingback: Mangas Verdes » Bienvenidos a mangasverdes.es

  7. Hola, te escribo a ver si podéis ayudarme.
    Tengo una cuenta en hostinginsiderspuntocom (un hosting cutre) y tengo allí nuevodominio.net apuntando a http://www.dominioviejo.com/nuevodominio/ hasta el sabado no hubo problemas porque lo que los visitantes veían era nuevodominio.net/category/permalink; no se quée paso el fin de semana que se cagó too y ahora no logro que se vea asi, cada vez que escribo nuevodominio.net me redirige a http://www.dominioviejo.com/nuevodominio/ pero me lo muestra en la barra y sólo quiero que allí se vea nuevo dominio.net. ¿Me expliqué? Sé que tengo que poner algo en el .htaccess pero no se me ocurre qué. Os agradecería mucho vuestra ayuda.
    Saludos.

  8. cree un archivo .htaccess y otro .htpassword pero como no me reconocía las contraseñas quise borrarlo pero cuando abro mi cliente ftp no los encuentro y el directorio en cuestión está bloqueado ahora con un error 403.

    ¿como puedo solucionarlo?

    gracias

  9. Pingback: Tridente » acceso restringido

  10. Hola, gracias por el comentario. Es muy útil la información

    Tengo una pregunta sobre el .htaccess, vereis. Tengo un sitio, que consta de un dominio y una administración

    Por ejemplo:
    http://www.misitio.com
    http://www.misitio.com/administración

    Se puede hacer que cuando ocurrá el error 404 en la página se vaya a http://www.misio.com/notfound.html y cuando pase dentro de la administración a http://www.misitio.com/administración/notfound.php

    Gracias

  11. Pingback: R3ivax i el seu WEBLOG » Blog Archive » .htaccess

  12. Hola! necesito una ayuda haver si me pueden ayudar, he visto en hi5.com y en otra pagina q los miembros pueden ver su perfil como un subdominio por ejemplo luismaster.hi5.com, a mi entender eso se hace en el mismo htaccess, me puede decir como puedo hacerlo, please?

  13. Saludos a todos los miembros del foro, quisiera saber con que instrucción puedo bloquear algunos directorios de mi sitioy dejar libre uno que necesito. Gracias

  14. hey me gustaria ponerle a mi web una autentificacion de usuario mediante .htaccess como la del xampp me gustaria ke me ayudaran

    se supone que los parametros en xampp que tiene el .htaccess son

    AuthName «xampp user»
    AuthType Basic
    AuthUserFile «C:\Archivos de programa\xampp\security\xampp.users»
    require valid-user

    puuues bien yo quiero validar el usuario con la pantalla esa que sale y con un bd que tengo en mysql como le hago???

  15. Hola a todos, os comento una duda que tengo para ver si me podéis ayudar:
    Tengo la necesidad de redireccionar el index de la raiz de mi sitio a una carpeta del mismo sitio que es donde tengo la web principal, he probado con:
    Redirect /antiguo.php http://mundogeek.net/otros/nuevo.php
    …y me funciona perfectamente, pero se podría usar el:
    DirectoryIndex index.php index.html index.htm /prohibido.php
    …en vez de la redirección?? y como??
    ¿o no tiene nada que ver?
    Gracias.

  16. Hola a todos saludos bueno me parece bien el tema, bueno el problema que tengo es referente al que los cliente de un programa no me llegan al servidor, el proxy me dice que estoy denegado el acceso, he puesto todas las reglas de acceso desde el squid prto no pasa nada yo creo es que el apache ,e esta bloqueando la entrada de los clientes.

    el programa montado es OCSinventory

    el herror desde el proxy es:
    TCP_DENIED/400 1564 POST /ocsinventory – NONE/- text/html

    no se en donde esta la falla gracias

  17. Pingback: www.Misnuevosnegocios.com » Redirección htaccess

  18. Pingback: el Chavalin » elChavalin.com

  19. Pingback: .htaccess

  20. Hola, no tengo claro cómo crear el .htaccess, es decir, puedo coger un bloc de notas, escribir el contenido y llamarlo pepito.htaccess ?

  21. Hola,

    Llegué a tu blog por Google, y me parece muy bueno. Quisiera hacerte una consulta: estoy construyendo también un blog en WordPress, y quiero cambiar los permalinks a un modo más amigable para los buscadores (no sólo con el número de artículo, que no ayuda mucho). Sé que tengo que cambiar el archivo .htaccess, pero éste está con 0 Kb en el servidor (me conecto vía FTP). Por lo visto, tengo que crearlo… pero no sé qué es lo que debe contener. Tienes algún modelo para utilizar?

    Mil gracias!

  22. Diego no hace falta que rellenes tu mismo el .htaccess

    Vete a Options -> Permalinks en la interfaz de administración y selecciona lo que quieras utilizar. WordPress se encargará de escribir lo necesario en el .htaccess por tí.

  23. Pingback: RevistaMex.com » www.htaccesstools.com

  24. Pingback: Tecnologia » Blog Archiv » Xhtml-Css Validator y .htaccess editor, herramientas para webmasters

  25. Pingback: Xhtml-Css Validator y .htaccess editor, herramientas para webmasters

  26. Pingback: Xhtml-Css Validator y .htaccess editor, herramientas para webmasters | InnovaPerú

  27. Pingback: www.libuku.com redirigido a libuku.com « El blog de Libuku

  28. Hola queria saber si yo tengo varios subdirectorios como tendria que hacer con la regla de rewrite

    por ejemplo tengo:
    midominio.com/directorio1/directorio2/directorio3

    y tengo la regla:
    RewriteEngine on
    RewriteRule ([_a-z-]+)/([_a-z-]+)/([_a-z-]+) pagina.php?pagina1=$pagina1&pagina2=$pagina2&pagina3=$pagina3

    esto seria correcto? o tendria que hacer una para cada directorio?

  29. Pingback: Laboratorios DragonJAR » Solución del HackTaller 01 DragonJAR (III de VIII)

  30. Pingback: Solución del HackTaller 01 DragonJAR (VI de VIII)

  31. hola que tal, mira mucho no entiendo, pero me aparece un mensaje cuando quiero subir un archivo «flenght file», es una pagina para subir archivos «uploadjockey», no sé por que me tira ese error, pero buscando siempre me dice que tengo que crear este archivo .htaccess, lo hice pero despues no se que hacer!!!, sigue todo igual.

  32. Pingback: Como hacer un fichero htaccess « Camyna.com

  33. Pingback: Instalar Handset Detection en un Hosting Compartido Linux | 2flash2furious :: diseño gráfico, web & multimedia :: por [Q] interactiva

  34. Pingback: Evitar contenido duplicado en buscadores: url canónica y rel=”canonical” | Estudio Freelance

  35. Si se edita el fichero .htaccess desde windows, surgirá el problema de que muy posiblemente no permita guardarlos con ese nombre , ya que se negará a crearlo por que piensa que no tiene nombre. La solución pasa por guardarlo con otro nombre y a la hora de subirlo mediante ftp al servidor, cambiarle allí el nombre.

  36. Pingback: El ataque a Betazeta y medidas para mejorar la seguridad | OneSide

  37. hola, sabe porque cuando intento modificar mi archivo .htaccess SIEMPRE me aparece:

    __________________________________________
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, webmaster@inventosencasa.com.ar and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
    Apache/1.3.41 Server at MI PAGINA Port 80

    ____________________________________

    es porque mi hosting no soporta modificar este tipo de archivos?

Responder a Zootropo Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.