En este post voy a repasar la configuración del fichero htaccess de WordPress para conocer las diferentes funcionalidades que posee y que se le pueden aplicar.
Este fichero htaccess se suele crear de manera automática tras una instalación de WordPress, pero en caso de que no tengamos permisos tendremos que crearlo nosoros mismos.
En esta URL del final tienes la documentación oficial del fichero.
Su ubicación se encuentra en la raíz de nuestro WordPress, su código por defecto es el siguiente:
Apache
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Centrémonos en estas 2 líneas:
Apache
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
La primera línea comprueba si la URL a la que se está accediendo es un fichero/archivo existente en el servidor, mientras que en la segunda línea se comprueba si la URL a la que se ha accedido es un directorio existente en el servidor.
En ambos casos se busca la negación de lo comprobado, de esta manera, si no es ni un fichero/archivo o directorio llegamos a la siguiente línea que es quién resuelve la URL y devuelve el contenido almancenado en el gestor de WP:
Apache
RewriteRule . /index.php [L]
Supongamos que accedemos al panel de login de nuestro backend de WordPress –> /wp-login.php, al ser un fichero/archivo válido nuestro htaccess deja que cargue direcho fichero y no resuelve la URL el core de WP.
PERMALINKS
Los permalinks son la estructura de enlaces de nuestro WP, con una estructura de permalinks correcta podemos mejorar notablemente el posicionamiento de nuestra web
Se configuran en el panel de administración –> Ajustes –> Enlaces permanentes y llegamos a la siguiente pantalla:
permalinks WordPressEn esta pantalla podemos elegir el tipo de URLs de nuestros post, categorías y etiquetas. Para los novatos os recomiendo elegir una de las siguientes opciones y dejar vacías la categoría base y etiqueta base:
Día y nombre
Mes y nombre
Nombre entrada
En mi blog he optado por escoger una estructura personalizada de URL.
Ahora solo nos faltaría guardar los cambios y el fichero htaccess de WordPress se debería actualizar, en caso de no disponer de los permisos necesarios para modificarlo, nos saldría un mensaje avisándonos para que editemos el fichero nosotros mismos copiando el código que nos sale por pantalla.
HTTP Compression
Permite comprimir el contenido en el servidor antes de enviarlo al cliente. Muy bueno para mejorar el WPO (Web Performance Optimization)
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Force Compression for certain files
<FilesMatch «\.(js|css|txt|xml)$»>
SetOutputFilter DEFLATE
Yo suelo usar
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
Opcione interesantes.
IMPEDIR EL LISTADO DE DIRECTORIOS DE WORDPRESS
Con esta simple línea impedimos el listado de directorios vía URL:
Apache
Options -Indexes
ENLACE SIMBOLICOS
Seguir enlace simbolicos y no poder ver directorios Ademas FollowSymLinks es necesario mod_rewrite.
Options FollowSymLinks
FICHERO POR DEFECTO
DirectoryIndex index.php index.html /index.php
CAMBIAR LOS PERMISOS DE NUESTRO HTACCESS
Tras la edición del fichero htaccess es muy recomendable cambiar sus permisos en el servidor a 444.
CACHE DEL NAVEGADOR DEL USUARIO
Mejora el uso de nuestro ancho de banda en lso usuarios que vuelven.
# EXPIRATION HEADERS.
# EXPIRATION HEADERS Activado.
ExpiresActive On
# Default expiration: 1 hour after request
ExpiresDefault «now plus 15 minutes»
ExpiresByType text/html «access plus 900 seconds»
# CSS and JS expiration: 1 week after request
ExpiresByType text/css «now plus 1 week»
ExpiresByType application/javascript «now plus 1 week»
ExpiresByType application/x-javascript «now plus 1 week»
ExpiresByType image/jpg «access 1 year»
ExpiresByType image/jpeg «access 1 year»
ExpiresByType image/gif «access 1 year»
ExpiresByType image/png «access 1 year»
ExpiresByType text/css «access 1 month»
ExpiresByType text/html «access 1 month»
ExpiresByType application/pdf «access 1 month»
ExpiresByType text/x-javascript «access 1 month»
ExpiresByType application/x-shockwave-flash «access 1 month»
ExpiresByType image/x-icon «access 1 year»
ExpiresDefault «access 1 month»
# Image files expiration: 1 year after request
ExpiresByType image/bmp «now plus 1 year»
ExpiresByType image/gif «now plus 1 year»
ExpiresByType image/jpeg «now plus 1 year»
ExpiresByType image/jp2 «now plus 1 year»
ExpiresByType image/pipeg «now plus 1 year»
ExpiresByType image/png «now plus 1 year»
ExpiresByType image/svg+xml «now plus 1 year»
ExpiresByType image/tiff «now plus 1 year»
ExpiresByType image/vnd.microsoft.icon «now plus 1 year»
ExpiresByType image/x-icon «now plus 1 year»
ExpiresByType image/ico «now plus 1 year»
ExpiresByType image/icon «now plus 1 year»
ExpiresByType text/ico «now plus 1 year»
ExpiresByType application/ico «now plus 1 year»
ExpiresByType image/vnd.wap.wbmp «now plus 1 year»
ExpiresByType application/vnd.wap.wbxml «now plus 1 year»
ExpiresByType application/smil «now plus 1 year»
# Audio files expiration: 1 year after request
ExpiresByType audio/basic «now plus 1 year»
ExpiresByType audio/mid «now plus 1 year»
ExpiresByType audio/midi «now plus 1 year»
ExpiresByType audio/mpeg «now plus 1 year»
ExpiresByType audio/x-aiff «now plus 1 year»
ExpiresByType audio/x-mpegurl «now plus 1 year»
ExpiresByType audio/x-pn-realaudio «now plus 1 year»
ExpiresByType audio/x-wav «now plus 1 year»
# Movie files expiration: 1 year after request
ExpiresByType application/x-shockwave-flash «now plus 1 year»
ExpiresByType x-world/x-vrml «now plus 1 year»
ExpiresByType video/x-msvideo «now plus 1 year»
ExpiresByType video/mpeg «now plus 1 year»
ExpiresByType video/mp4 «now plus 1 year»
ExpiresByType video/quicktime «now plus 1 year»
ExpiresByType video/x-la-asf «now plus 1 year»
ExpiresByType video/x-ms-asf «now plus 1 year»
# Font expiration: 1 year after request
ExpiresByType application/vnd.ms-fontobject «access plus 1 year»
ExpiresByType font/ttf «access plus 1 year»
ExpiresByType font/otf «access plus 1 year»
ExpiresByType font/x-woff «access plus 1 year»
ExpiresByType image/svg+xml «access plus 1 year»
ExpiresByType application/pdf «access plus 1 year»
<FilesMatch «\.php$»>
ExpiresByType text/html «now»
PROTEGER LOS FICHEROS CLAVE DE WORDPRESS
Hay que mantener a salvo los ficheros más importantes de nuestro WP, tales como los de login, configuración, instalación o información de la versión que usamos.
Apache
<files .htaccess>
Order allow,deny
Deny from all
</files>
<files readme.html>
Order allow,deny
Deny from all
</files>
<files readme.txt>
Order allow,deny
Deny from all
</files>
<files install.php>
Order allow,deny
Deny from all
</files>
<files wp-config.php>
Order allow,deny
Deny from all
</files>
<files xmlrpc.php>
Order allow,deny
Deny from all
</files>
LOS TIPOS DE FICHEROS SON IMPORTANTES
AddType text/html .asp .aspx .ascx .ashx .asmx
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/x-woff .woff
AddType image/svg+xml .svg
El resto lo puedes ver en
https://codex.wordpress.org/htaccess
. Leer artículo completo en Frikipandi Configuración del fichero htaccess de WordPress.