Cómo aumentar la velocidad de WordPress y proteger tu sitio sin plugins

Si buscas cómo aumentar la velocidad de WordPress y proteger tu sitio sin plugins, entonces debes leer el siguiente artículo.

velocidad de WordPress
Cómo aumentar la velocidad de WordPress

Aunque los plugins pueden resolver varios problemas de forma casi automática, siempre tienen funcionalidades extras que terminan sobrecargando el servidor. Por este motivo, lo ideal sería trabajar determinadas configuraciones modificando el .htaccess. Si no sabes de qué hablo, no te preocupes, a continuación, te explicaré con mayor detalle.

Qué es el .htaccess

.htaccess es el archivo de configuración en los servidores Apache. Localizado en el correspondiente directorio, el archivo es detectado y procesado por el software de Apache. Estas configuraciones pueden ayudarnos a mejorar la velocidad de carga de un sitio y protegerlo contra posibles ataques.

Básicamente, este archivo se utiliza para activar o desactivar las opciones que están disponibles en Apache. Entre estas funciones podemos mencionar las de redirección para los errores 404 por páginas no encontradas y compresión de caché. También se pueden habilitar funciones más avanzadas como prohibir el enlazado directo a imágenes guardadas en nuestro servidor.

Entonces, si queremos evitar las enormes bibliotecas de plugins y configuraciones en el servidor, lo recomendables es utilizar .htaccess.

Cómo aumentar la velocidad de WordPress sin utilizar plugins

Cuando el sitio web es lento, el usuario siente que pierde tiempo esperando y se retira decepcionado. Aunque muchos todavía lo niegan, la velocidad del sitio es muy importante para el posicionamiento en los resultados de Google. Además, un sitio que carga rápido, facilita la navegación y deja una buena impresión en los usuarios.

Habilitar compresión GZip en WordPress utilizando .htaccess

Mediante la compresión GZip se puede mejorar el tiempo de carga de un sitio creado con WordPress. Para hacerlo desde htaccess debes habilitar mod_deflate.c y usar los filtros apropiados como en el siguiente ejemplo:

 

ver ejemplo

 

<ifmodule mod_deflate.c>

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/text

AddOutputFilterByType DEFLATE image/jpg

AddOutputFilterByType DEFLATE image/png

AddOutputFilterByType DEFLATE application/rss+xml

AddOutputFilterByType DEFLATE application/xhtml+xml

 

AddOutputFilterByType DEFLATE video/3gpp

AddOutputFilterByType DEFLATE video/mp4

AddOutputFilterByType DEFLATE audio/mp3

AddOutputFilterByType DEFLATE audio/wav

# Fix Browsers

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4\.0[678] no-gzip

BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

</ifmodule>

 

En el ejemplo anterior comprimimos algunos elementos multimedia. Al incluir estas líneas en .htaccess, conseguiremos un mejor rendimiento y velocidad de carga del sitio web. Aunque debes tener presente que algunos navegadores no tienen soporte para GZip.

Configuración de la caché de WordPress desde .htaccess

Si deseas acelerar tu sitio web mediante el almacenamiento en caché de javascript, CSS e imágenes, entonces puedes configurar fácilmente desde .htaccess, incluyendo el mod_expires.c

ver ejemplo 2

# Expires – 2592000s = 30 days

<ifmodule mod_expires.c>

ExpiresActive On

ExpiresDefault “access plus 1 seconds”

ExpiresByType text/html “access plus 7200 seconds”

ExpiresByType image/gif “access plus 2592000 seconds”

ExpiresByType image/jpeg “access plus 2592000 seconds”

ExpiresByType image/png “access plus 2592000 seconds”

ExpiresByType text/css “access plus 518400 seconds”

ExpiresByType text/javascript “access plus 2592000 seconds”

ExpiresByType application/x-javascript “access plus 2592000 seconds”

</ifmodule>

Para este ejemplo se utilizó la caché por 31 días, pero puedes cambiarlo al tiempo que creas conveniente. Y para el header puedes usar el siguiente código (aquí también puedes configurar el parámetro max-age según te parezca):

ver ejemplo 3

# Cache Headers

<ifmodule mod_headers.c>

# Cache specified files for 30 days

<filesmatch “\.(ico|flv|jpg|jpeg|png|gif|css|swf)$”>

Header set Cache-Control “max-age=2592000, public”

</filesmatch>

# Cache HTML files for a couple hours

<filesmatch “\.(html|htm)$”>

Header set Cache-Control “max-age=7200, private, must-revalidate”

</filesmatch>

# Cache PDFs for a day

<filesmatch “\.(pdf)$”>

Header set Cache-Control “max-age=86400, public”

</filesmatch>

# Cache Javascripts for 30 days

<filesmatch “\.(js)$”>

Header set Cache-Control “max-age=2592000, private”

</filesmatch>

</ifmodule>

Cómo proteger la instalación de WordPress a través de .htaccess

En realidad, WordPress es uno de los CMS más atacados por los delincuentes informáticos. Sin embargo, puedes hacer algunas cosas para dificultarles el trabajo. Sí, existen plugins que ofrecen protección, pero algunas veces proteger desde .htaccess puede ser mucho más eficaz. A continuación, tienes unas líneas de código que te ayudarán a proteger tu instalación de WordPress a través de .htaccess.

ver ejemplo 4

# Disable directory browsing

Options All -Indexes

 

# Deny access to wp-config.php file

<files wp-config.php>

order allow,deny

deny from all

</files>

 

# Deny access to xmlrpc.php file *** REMOVE THIS IF YOU WANT TO ACCESS IT ***

<files xmlrpc.php>

order allow,deny

deny from all

</files>

 

# Deny access to all .htaccess files

<files ~ “^.*\.([Hh][Tt][Aa])”>

order allow,deny

deny from all

satisfy all

</files>

 

# Block wp-includes folder and files

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^wp-admin/includes/ – [F,L]

RewriteRule !^wp-includes/ – [S=3]

RewriteRule ^wp-includes/[^/]+\.php$ – [F,L]

RewriteRule ^wp-includes/js/tinymce/langs/.+\.php – [F,L]

RewriteRule ^wp-includes/theme-compat/ – [F,L]

</IfModule>

 

# Block Massive attacks

<IfModule mod_rewrite.c>

RewriteEngine On

# Block out any script trying to base64_encode data within the URL.

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]

# Block out any script that includes a <script> tag in URL.

RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]

# Block out any script trying to set a PHP GLOBALS variable via URL.

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

# Block out any script trying to modify a _REQUEST variable via URL.

RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

# Return 403 Forbidden header and show the content of the root homepage

RewriteRule .* index.php [F]

 

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

 

# Disable user agents from this locations

SetEnvIfNoCase User-Agent “^Missigua Locator” bad_bot

#SetEnvIfNoCase User-Agent “^PEAR HTTP_Request class” bad_bot

SetEnvIfNoCase User-Agent “^Java/1.4.1” bad_bot

SetEnvIfNoCase User-Agent “^Java/1.5.0” bad_bot

SetEnvIfNoCase User-Agent “^psycheclone” bad_bot

SetEnvIfNoCase User-Agent “^WEP Search 00” bad_bot

SetEnvIfNoCase User-Agent “^FlashGet” bad_bot

SetEnvIfNoCase User-Agent “^GetRight” bad_bot

SetEnvIfNoCase User-Agent “^GetWeb!” bad_bot

SetEnvIfNoCase User-Agent “^Go!Zilla” bad_bot

SetEnvIfNoCase User-Agent “^httplib” bad_bot

SetEnvIfNoCase User-Agent “^Indy Library” bad_bot

SetEnvIfNoCase User-Agent “^InfoNaviRobot” bad_bot

SetEnvIfNoCase User-Agent “^InterGET” bad_bot

SetEnvIfNoCase User-Agent “^Internet Ninja” bad_bot

SetEnvIfNoCase User-Agent “^LexiBot” bad_bot

SetEnvIfNoCase User-Agent “^libWeb/clsHTTP” bad_bot

SetEnvIfNoCase User-Agent “^libwww” bad_bot

SetEnvIfNoCase User-Agent “^libwww-perl” bad_bot

SetEnvIfNoCase User-Agent “^LinkextractorPro” bad_bot

SetEnvIfNoCase User-Agent “^Mozilla.*NEWT” bad_bot

SetEnvIfNoCase User-Agent “^Octopus” bad_bot

SetEnvIfNoCase User-Agent “^ProWebWalker” bad_bot

SetEnvIfNoCase User-Agent “^SuperBot” bad_bot

SetEnvIfNoCase User-Agent “^WebAuto” bad_bot

SetEnvIfNoCase User-Agent “^Wells Search II” bad_bot

SetEnvIfNoCase User-Agent “^Wget” bad_bot

SetEnvIfNoCase User-Agent “^wget” bad_bot

 

<Limit GET POST>

order allow,deny

allow from all

deny from env=bad_bot

</Limit>

</IfModule>

Como siempre que trabajes desde el código, te recomiendo que hagas una copia de seguridad antes emplear estos ejemplos. También debes saber que no se trata de una solución universal. Si quieres más velocidad y protección, entonces quedan muchas cosas por hacer para obtener el resultado deseado. Hasta aquí este articulo

 

Deja un comentario

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

A %d blogueros les gusta esto: