Aunque todos tenemos a Akismet instalado para evitar la inmensa mayoría de los comentarios spam hay algunos spammers que poco a poco van aprendiendo y se cuelan en nuestro blog para vender sus viagras, vicodinas o alargamientos de pene, entre otras maravillas de la ciencia moderna.
Pues bien, hay un truco de .htaccess
que puede evitar directamente que los bots spammers accedan a nuestros formularios de comentarios. Esto es gracias a que normalmente los bots spammers no tienen referrer, o sea que no vienen de ninguna página, y mucho menos de nuestro blog. Lo que hace este código es comprobar de donde viene nuestro «comentador» y si no viene de alguna página de nuestro blog (lo más lógico tras hacer clic en un permalink nuestro) evita que acceda al archivo wp-comments-post.php
.
RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post.php* RewriteCond %{HTTP_REFERER} !.*tublog.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Solo tienes que cambiar la dirección en la línea 4 del código y guardar este código en tu fichero .htaccess
.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Que bueno el truquete. Pues nada a editar un poco de codigo 😉
pregunta tonta (y simple), y si viene desde el feed?, digo: si el lector viene desde el feed, accede a comentar?
Pues depende del permalink del feed, no lo he probado pero en teoría debe dejarle porque accede desde el permalink directo al post.
@Juan Pablo: yo tenía la misma duda, pero si te fijas a lo que estas negando el acceso es al archivo "wp-comments-post.php" si entras desde el feed a la fuerza tienes que entrar a la página del post (single.php o page.php o cual sea la página), entonces al dar clic al botón de guardar comentarios se manda llamar la página esa y como el referer al archivo que se utiliza para guardar los comentarios siempre irá la página donde estas tecleando el comentario (que es diferente a wp-comments-post.php).
Saludos.
cierto lo que señala Toño… no lo probé pero pensandolo es pura lógica y debe ser así, como lector (desde el feed o desde cualquier lado) accedemos al post y dentro está el wp-comments….
gracias Toño y Fernando, a toquetear el htaccess entonces, genial!
Es posible hacer lo mismo desde .htacces para evitar el registro de bot? Es que no soy amigo de los captchas.
Saludos!
Prueba sustituyendo wp-comments-post.php por wp-register.php, debería funcionar.
Pero debo agregar todos el código, o al código que colocaste le agrego la línea RewriteCond %{REQUEST_URI} .wp-register.php*
Es decir, lo dejaría
<code>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{REQUEST_URI} .wp-register.php*
RewriteCond %{HTTP_REFERER} !. *www.blog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</code>
Gracias
Interesante método, voy a ponerlo a prueba a ver qué tal, si ya apenas tengo que revisar el Akismet xD
Un saludo y muchas gracias por la propuesta! 😉
Interesante este truco. Hace apenas dos semanas que instale a WP Captcha Free, que junto con Askimet es una gran combinacion. Desde entonces ya no tengo los molestos spam en espera pero tampoco los molestos y confusos captchas.
Lo malo es que es un plugin mas, asi que este truco me va muy bien.
Genial truco!. Hace muchos años hice algo parecido editando wp-comments (en los campos del formulario), pero con las actualizaciones de wordpress me perdí.
Este truco me cae como bendición, ya que tengo que borrar más de comentarios 300 comentarios spam todos los días.
muy bueno sí
Esto es lo que estaba necesitando, pero no entiendo como se hace. Ingrese al htaccess y me figura lo siguiente:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Tengo que colocar lo que indicas en el medio de lo que me figura o reemplazarlo todo?.
Gracias por la ayuda.
Maria colocalo todo entero