Htaccess para WordPress

Configurar administración de WordPress

Después de presentar una pincelada para los Rich snippets, he preparado unas directrices para configurar correctamente las url en nuestro wordpress siempre hemos de intentar que estas ocupen los mínimos carácteres posibles por lo que siempre que realizemos una instalación nueva hemos de evitar las www iniciales y la / final en la construcción de las url’s. Para ello realizaremos las siguientes modificaciones en el panel de administración.

En AjustesEnlaces Permanentes utilizaríamos la Estructura personalizada

/%postname%

Al no introducri la / final acortamos la url en un valor

En Ajustes Generales Dirección de WordPress (URL)Dirección del sitio (URL) introduciremos

http://susitioweb.com

Antiguamente las www tenian sentido ya que identificaban el protocolo como se accedia al servidor pero en la actualidad es mejor prescindir de ellas para poder acortar la url.

Una vez realizadas las modificaciones mencionadas deberemos de introducir en el htaccess de nuestro wordpress lo siguiente

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Htaccess de WordPress o sitio web

A continuación se detallan algunas modificaciones a realizar en el archivo .htaccess de un wordpress para mejorar varios aspectos del sitio y en muchos casos útilies para cualquier sitio web, al ser htaccess un archivo muy crítico para el funcionamiento de su wordpress aconsejamos realizar una copia de seguridad antes de proceder a cualquier modificación.

Compresión gzip en el htaccess

ExpiresActive On
ExpiresDefault A0
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript image/svg+xml
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>

Activar la cache en WordPress

<FilesMatch "\.(css|js|gif|jpeg|png|ico)$">
ExpiresActive On
ExpiresDefault "access plus 1 year"
</FilesMatch>

Para indicar que no quieres etiquetar con ETag

FileETag none

Páginas de error personalizadas

ErrorDocument 403 /acceso_prohibido.php
ErrorDocument 404 /pagina_no_encontrada.php
ErrorDocument 500 /pagina_de_error.php

Redirecciones 301 en htaccess

En este video del centro de asistencia de google se dan algunas recomendaciones muy interesantes.

En apache se pueden realizar de tres formas diferentes que brevemente se detallan a continuación

Redirect

Se utiliza para la redirección de pocas url’s estáticas

Redirect 301 /pagina_vieja.php http://tudominio.com/pagina_nueva.php

redirectMatch

Utiliza expresiones regulares lo que permite usar patrones

redirectMatch 301 (.*)\.html$ http://tudominio.com$1.php
redirectMatch 301 ^/pagina_vieja.php http://tudominio.com/pagina_nueva.php
redirectMatch 301 ^/carpeta_vieja/ http://tudominio.com

RewriteRule

Se utiliza el flag R y es muy similar al redirectMatch pero permite variaciones utilizando el RewriteCond

De www.tudominio.com a tudominio.com

RewriteEngine on
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www.tudominio.com\.com
RewriteRule (.*) tudominio.com/$1 [R=301,L]

De tudominio.com a www.tudominio.com

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

No permitir el robo de imagenes (hotlinking) mostrando una imagen personalizada

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?tusitioweb\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?otrositioweb\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ nuevaimagen.gif [L]

Proteger los comentarios de Páginas y Artículos del Spam

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

Proteger contra inyecciones sql

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Restringir accesso al wp-admin de wordpress

<Files wp-login.php>
Order Deny, Allow
Deny from all
Allow from xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx
</Files>

Bloquear ip’s o bots 

order allow,deny
allow from all
deny from xxx.xxx.xxx.xxx

Una vez realizada cualquier de las modificaciones propuestas es aconsejable revisar el correcto funcionamiento de todo el sitio y en caso de mal funcionamiento restarura la copia del .htaccess de su wordpress
Hemos de tener en cuenta que es muy importante que los permisos de nuestro htaccess siempre sean 644 y sobretodo recordad que las modificaciones en este fichero es de las acciones mas críticas que se pueden realizar en un sitio web.

MUCHO CUIDADO cuando toqueis el .htaccess de vuestro wordpress o sitio web.  Si necesitáis un poco de asesoramiento, somos una agencia seo especializada en WordPress, no lo dudes somos tu mejor partner en desarrollo de aplicaciones web responsive.

5 comentarios en “Htaccess para WordPress”

  1. Cesar Martín del Pino

    Hola no soy un experto a la hora de modificar el htaccess y me parece un buen post sobre como mejorar el rendimiento de wordpress, ¿pero son todas las modificaciones necesarias?, saludos.

  2. En este post se recogen algunas de las opciones que nos da el .htaccess para nuestros post pero todas son opcionales y para cada necesidad se puede hacer servir la que corresponda.

Dejar un comentario

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