El htaccess es un archivo de texto plano en el que se insertan una o varias directivas de configuración. Se puede usar en la raíz del sitio o en cualquier directorio especifico, siempre que la directiva «AllowOverride» en la configuración principal de Apache lo permita. Es por tanto un archivo de configuración interpretable por servidores web Apache y otros servidores web compatibles como LiteSpeed. Al llevar un punto delante, este fichero aparecerá por defecto oculto, evitando así ser borrado de forma accidental. Este fichero no se utilizaría en el caso de que nuestro servidor web sea Nginx, que necesitará una configuración específica.
Al ser un fichero de configuración, puede ser empleado para muchas tareas, entre ellas:
- Crear direcciones amigables
- Crear redirecciones
- Restringir el acceso a directorios del servidor
- Bloquear el acceso desde ciertas direcciones IP
- Manejar errores del servidor
- Evitar el hotlink o enlace a imágenes
- Cambiar un dominio con o sin WWW
El .htaccess en wordpress
En el caso de WordPress, se emplea el archivo .htaccess para gestionar las URL’s amigables (Permalinks en WP) o slugs, mediante la función mod_rewrite_rules
Archivo .htaccess por defecto de una instalación de WordPress:
# BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
En el caso de disponer de una instalación de WordPress Multisitio, configurado para trabajar con carpetas y no con subdominios, el contenido de nuestro .htaccess sería el que sigue:
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L]
Más información en el CODEX de WordPress: https://codex.wordpress.org/htaccess