10 excelentes trucos .htaccess para WordPress y una recomendación

23 de marzo de 2009 a las 02:47h
htaccess

Vía Blogging Pro, llego a este interesante artículo ‘10 awesome .htaccess hacks for WordPress‘ de Cats who Code, en el que se nos muestra una recopilación de ‘tips’ para tunear nuestro blog en WordPress sin necesidad de recurrir a plugins y, por tanto, no sobrecargar las bases de datos.A continuación te dejo los códigos y textos traducidos o añadidos. Y no te olvides de leer las consideraciones al final del post:

1. Redireccionar los feeds RSS a FeedBurner

Aunque en la actualidad hay varios plugins que cumplen esta función, con este código no dependerás nunca de terceros:

# INICIO temp redirect wordpress content feeds to feedburner

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner[NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds2.feedburner.com/xxxxxxx [R=302,NC,L]

# FIN temp redirect wordpress content feeds to feedburner

Recomendación: Esto me surgió en los comentarios a un post, y lo recuerdo encendidamente aquí: cuando tengas los feeds redireccionados, ¡jamás cambies la dirección original de tu feed en tu plantilla! Con los plugins redireccionadores, los lectores se están suscribiendo a tu feed original, aunque sean redirigidos a un servicio externo tipo FeedBurner o Google. De este modo, si un día estos servicios dejan de funcionar, ¡tú no pierdes tus suscriptores! Si cambias el feed original en tu plantilla por el de un servicio externo, ¡los lectores se suscribirán al servicio externo! y, si el servicio colapsa, tendrás un buen problema para recuperarlos.

2. Eliminar la palabra ‘category’ de tus url:

El término ‘category’ es ése que se interpone entre la dirección de tu blog y el nombre de la categoría cuando navegas por las páginas de categorías. Suele ser incómodo para todos, pero especialmente para los bloggers hispanos, porque el término, salvo hack mediante, aparece siempre en inglés. Para eliminarla, sigue los siguientes pasos:

  1. Ve a Opciones>Permalinks en tu panel de control y escoge la opción #2 (Día y nombre), si no lo has hecho ya.
  2. Haz una copia de seguridad de tu .htaccess.
  3. Inserta este código en el .htaccess:
    RewriteRule ^category/(.+)$ http://www.yourblog.com/$1 [R=301,L]

3. Forzar la caché del navegador

Esta función envía un aviso 304 indicando que el elemento solicitado no ha experimentando cambios, ayudando enormemente a acelerar la carga de las páginas:

# INICIO FileETag MTime Size


ExpiresActive on
ExpiresDefault "access plus 1 year"


# FIN FileETag MTime Size

4. Comprimir el contenido estático

Al igual que el anterior, este código va dirigido a mejorar el rendimiento de tu blog, comprimiendo datos que serán descomprimidos por el cliente del lector, ahorrándote ancho de banda a ti y a tus usuarios Por lo que veo, sólo para Firefox:

# INICIO comprimir contenido estático
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
# INICIO comprimir contenido estático

5. Redirigir las url basadas en fechas y nombre a sólo nombre

Quienes hayan intentado cambiar sus permalinks de la estructura ‘fecha+nombre’ a ’sólo nombre del post o página’, se habrán encontrado con la desagradable sorpresa de que la cosa no funciona y creo recordar que leí una vez que es porque el programa es incapaz de diferenciar en esos casos entre url de contenidos y las url de los elementos que tengamos en nuetros directorio raíz. Para eso existe este truco que ‘engaña’ un tanto al sistema:

  1. Ve a Opciones>Permalink del panel de control y escoge ‘Estructura personalizada’ o ‘custom’, si lo tienes en inglés (la opción #5, en cualquier caso), e introduce /%postname%/.
  2. Ve a tu .htaccess y escribe (todo en una sola línea):
    RedirectMatch 301 /([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://www.domain.com/$4

Con lo que redirigiremos todas nuestras antiguas url de ‘fecha+nombre’ a ’sólo nombre’.

6. Imposibilitar comentarios de spam

Bueno, quizá no a todos, pero sí a la inmensa mayoría, que son los que provienen de bots sin referencia alguna. Este código impide comentar a todo aquel que lo intente si haber pasado previamente por el blog, que es lo que diferencia a los spammers de tus lectores. Totalmente compatible con Akismet y otros plugins del ramo:

# INICIO bye bye spam
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
# FIN bye bye spam

7. Redirigir a los visitantes a una página de mantenimiento:

Bueno, esto es para el caso que no quieras o no puedas tener accesible el blog: rediseño, cambios…:

# INICIO mantenimiento
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]
# FIN mantenimiento

8. Impedir el hotlinking

Sobre esto no hay demasiada coincidencia. Está claro que el hotlinking repercute en tu ancho de banda, pero por otro lado también te otorga tráfico. De todas formas, aquí va el código por si lo quieres usar:

# INICIO stop hotlinking
RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
# FIN stop hotlinking

9. Restringir el acceso al panel de administración a tu IP

Sencillo. Para que ninguna otra IP pueda acceder:

# INICIO solo admin
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic

order deny,allow
deny from all
allow from xx.xx.xx.xx

# FIN solo admin

10. Banear usuarios o spammers

Cuidado, no abuses de esta opción porque las IP van cambiando con el tiempo y podrías comenzar a bloquear usuarios que no han hecho nada:

# INICIO baneo

order allow,deny
deny from xx.xx.xx.xx
allow from all

# FIN baneo

Puedes añadir tantos ‘deny from’ como quieras.

Consideraciones que debes tener en cuenta:

  • Éste es un tutorial de ayuda, en ningún caso nos haremos responsables de los resultados.
  • Manipular el .htaccess es una tarea reservada a usuarios con cierta experiencia, así que si no sabes los que estás haciendo o tienes dudas, mejor no hagas nada.
  • El fichero .htaccess se crea por defecto en cuanto cambias la estructura de permalinks, siempre y cuando la raíz del directorio tenga los permisos adecuados (777). Si no lo tienes creado, puedes hacerlo tú mismo, bien por FTP, bien en el panel de administración de tu servidor (dependiendo de la configuración, sólo en este último caso).
  • El archivo .htaccess debe estar en el directorio raíz de tu instalación (donde está ‘wp-config.php) y no debe tener permisos de escritura ni ejecución (644).
  • Para realizar algunos de los trucos que exponemos puede ser necesario dar permisos 777 al .htaccess, acuérdate de devolverlos a 644 después.
  • Si el .htaccess ya estaba creado, encontrarás allí algunos códigos (WP Super Cache, por ejemplo)… ¡No los toques! Añade los nuevos a continuación.
  • En la mayor parte de los códigos que ofrecemos, debes cambiar algunos datos por defecto por los de tu blog. Fíjate en cosas como ‘xxx’, ‘http://www.yourblog.com/’, ‘http://www.domain.com’, ‘maintenance.html’, etc. y reescríbelas con tus propios datos.
  • Haz siempre copias de seguridad de tu .htaccess antes de probar cualquiera de estos códigos.

Que te aproveche. Y, lo dicho, ve con cuidadito.

Sobre el autor
Manuel M. Almeida
Ver biografía