.htaccess en WordPress
Wordpress 21 noviembre 2007
.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 http://mundogeek.net/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).
Vota este artículo:
Posts anterior y posterior:
- Previo: « Actualizar WordPress 2.3 a 2.3.1
- Siguiente: Comprimir CSS para ahorrar ancho de banda »

marzo 15th, 2008 a las 11:33 am
Hola, David.
Uso WordPress última versión para un sitio sobre derecho de telecomunicaciones. El viernes me di cuenta de que al entrar al site, se mostraba la página inicial por defecto, y no index.php. Si agrego al URL /index.php, despliega la página inicial de WordPress, pero ninguno de los enlaces (permalinks) funciona, todos llevan a la página por defecto (index.htm). Desde FANTASTICO en mi cpanel removí la instalación de WordPress, y luego instalé el programa de nuevo, pero los resultados son exactamente los mismos. ¿Alguna idea?
marzo 15th, 2008 a las 12:07 pm
Hola, David, soy yo de nuevo. Como es evidente, soy un novato en esto de la configuración a mano de WordPress y en Apache. Pues resulta que seguí buscando en internet, y traté algo tan simple como usar DirectoryIndex index.php en el archivo .htacces. Ahora todo funciona normal. Estuve mirando el foro en WordPress.org, y veo que muchas personas tienen problemas similares. Entiendo porqué entra a index.php, mas no porqué con ese sencillo truco volvieron a funcionar los permalinks, agradezco alguna ilustración sobre esto último, si es posible.
marzo 17th, 2008 a las 6:05 pm
Hola Pedro, perdona por mi tardanza en responderte.
el archivo index.php es el que lanza el comienzo de todas las variables, clases y funciones del wordpress, sobre todo la configuracion y la plantilla.
Si has indagado por el panel de control de wordpress habrás visto que el formato de los permalinks se puede variar y se monta o se cambia a partir de tus opciones de configuración, por eso ha de indicarse el index.php desde el htaccess y todos los links empiezan a funcionar desde entonces.
Lo curioso es que el FANTASTICO no te haya creado el htaccess desde el principio. Mas información aqui.
febrero 20th, 2009 a las 4:01 am
Hola, a mi con 2.7.1 me pasa algo parecido. Cuando pincho en la cabecera o intento acceder a http://misitio/wordpress o http://misitio/wordpress me lista el contetido del directorio wordpress, peo no me muestra las entradas del blog. He intentado de todo: poner en el .htaccess Options -Indexes o DirectoryIndex index.php, pero nada.
Este es el .htaccess que me genera wordpress:
# BEGIN WordPress
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
# END WordPress
febrero 20th, 2009 a las 4:25 am
Resuelto. Me faltaba poner AllowOverride All en el httpd.conf
Gracias
junio 9th, 2009 a las 5:44 am
No sé que estoy haciendo mal, o que me está faltando, pero definitivamente no logro hacer mis pretty permalinks, tal vez en otro momento con un poco más de tiempo y si me entero de algo nuevo lo intente de nuevo, saludos!!!
julio 23rd, 2009 a las 12:15 am
Tenia el error internal server error y resolví eliminando el .htaccess eso fue todo. No me dejaba entrar en mi pagina con wordpress. Suerte y Gracias
junio 11th, 2011 a las 11:22 am
Mil gracias, yupi pude solucionar mi problema mil gracias por la informacion.
septiembre 12th, 2011 a las 10:08 am
Puse este código y funcionó correctamente, gracias a todos!
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
octubre 5th, 2011 a las 1:55 am
Mi sitio web (http://www.librosparadescargargratis.com) no se visualiza correctamente, al ingresar, en lugar de mostrarse las dós últimas entradas (tengo configurado el sitio para que se muestren las dos últimas entradas) sale la opción de busqueda, como lo pueden apreciar ingresando a mi blog.
Será problema de .htaccess?
Actualmente ésto es lo que tengo el el .htaccess:
# -FrontPage-
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
order deny,allow
deny from all
allow from all
order deny,allow
deny from all
AuthName librosparadescargargratis.com
AuthUserFile /home/librospa/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/librospa/public_html/_vti_pvt/service.grp
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Gracias por todo el apoyo que puedan brindarme.