.htaccess en WordPress

.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).

10 comentarios en “.htaccess en WordPress

  1. 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.

  2. Puse este código y funcionó correctamente, gracias a todos!

    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all

  3. 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

  4. 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!!!

  5. 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

  6. 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.

  7. 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.

  8. 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?

Los comentarios están cerrados.