El fichero .htaccess para WordPress

Tabla de contenidos

El archivo .htaccess se utiliza para definir el comportamiento del servidor de nuestra página o definir funciones en el mismo. ¿para qué puedo utilizar .htaccess? Su uso es extenso, pero algunos usos frecuentes son: restringir accesos a directorios, bloquear bots, arañas web o IPs. redireccionar un directorio, forzar el protocolo https, etc.

Cada función son unas pocas líneas de código, que indica al servidor lo que tiene que hacer. Puedes añadir o cambiar la funcionalidad añadiendo o cambiando el código de este archivo.

Nosotros lo utilizamos en los casos siguientes:

Compresión y optimización de archivos

Comprimir con GZIP

<ifModule mod_gzip.c>
 mod_gzip_on Yes
 mod_gzip_dechunk Yes
 mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
 mod_gzip_item_include handler ^cgi-script$
 mod_gzip_item_include mime ^text/.*
 mod_gzip_item_include mime ^application/x-javascript.*
 mod_gzip_item_exclude mime ^image/.*
 mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
 </ifModule>

Comprimir con DEFLATE

<IfModule mod_deflate.c>
 # 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

Habilitar keep-alive

<ifModule mod_headers.c> Header set Connection keep-alive </ifModule>

Añadir «Expires headers»

Indica al navegador si debe solicitar un archivo específico del servidor o si debe tomarlo desde la caché del navegador.

<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On 
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 month"
# Javascript
ExpiresByType application/javascript "access plus 1 year"
</IfModule>

Usar reglas .htacces para redirecciones

Redirección de una url

Es la redirección más sencilla. Se aplica, por ejemplo, si cambiamos la url de una entrada:

redirect 301 /slug-antiguo/    https://www.midominio.com/nuevo-slug/

Redirección de una url con espacios o «%20»

A veces, las urls incluyen espacios, que se representan en el navegador como «%20». Si aplicamos una redirección como en el caso anterior no se llevará a cabo. Es necesario indicar que hay un espacio.

Si la url es, por ejemplo, https://www.midominio.com/antiguo%20slug/, debemos indicarlo con comillas simples:

redirect 301 '/antiguo%20slug/'    https://www.midominio.com/nuevo-slug/

Redirección de todo el dominio

Si cambiamos de dominio, podemos hacer la redirección de la siguiente manera:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^anteriordominio.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.anteriordominio.com$
  RewriteRule (.*)$ http://www.nuevodominio.com/$1 [R=301,L]
</IfModule>

Redirigir un dominio sin www al dominio con www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^midominoio.com [NC]
RewriteRule ^(.*)$ http://www.midominoio.com/$1 [L,R=301]

Cambio de una categoría de wordpress

Si cambiamos el nombre de una categoría, podemos crear la redirección de la antigua a la nueva de la siguiente manera:

RewriteRule ^categoriaantigua/(.+)$ https://www.nuestrodominio.com/categorianueva/$1 [R=301,L]

Incluir un subdirectorio en tags

Por ejemplo, incluir las tags bajo el directorio blog.

RewriteCond %{THE_REQUEST} ^GET\ /tag
 RewriteRule ^tag(.*) /blog/tag$1 [L,R=301]

Forzar protocolo seguro https

RewriteEngine On
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.nuestrodominio.com/$1 [R=301,L,NE]

Forzar barra inclinada al final

RewriteEngine on
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

Nota: Cuidado, en algunas instalaciones, esta regla nos ha dado problemas con el plugin de Contact Form 7. Concretamente con al url interna (wp-json/….). En este caso hay que incluir una excepción en la regla:

# tk_ Añadir barra inclinada al final de url
RewriteEngine on RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.)/$
RewriteCond %{REQUEST_URI} !^/wp-json
RewriteCond %{REQUEST_FILENAME} !.(gif|jpg|png|jpeg|css|js|xml)$ [NC]
RewriteRule ^(.)$ https://%{HTTP_HOST}/$1/ [L,R=301]
#  Fin de tk_ Añadir barra inclinada al final de url

https://wordpress.org/support/topic/contact-form-7-wp-json-404-error/

Seguridad

Proteger el archivo .htaccess

<Files .htaccess>
Order allow,deny
Deny from all
</Files>

Direcciones útiles con información, ejemplos, etc.

https://www.bonaval.com/kb/sistemas-operativos/linux-sistemas-operativos/ejemplos-de-htaccess-que-todo-webmaster-deberia-conocer#1_redireccionamiento-ejemplos-practicos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Abrir el chat
1
¿Necesitas ayuda?
Alimento Web
Hola,
¿Podemos ayudarte?