• ResueltoModerador almendron

    (@almendron)


    Tengo el siguiente código en el .htaccess para evitar que en las URL,s aparezca el parámetro «fbclid» cuando se hace clic en un enlace de Facebook que dirige a mi página:

    # BEGIN parametro facebook
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /blog/
      RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)fbclid=(?:[^&]*)((?:&|$).*)$ [NC]
      RewriteCond %1%2 (^|&)([^&].*|$)
      RewriteRule ^(.*) blog/$1?%2 [R=301,L]
    </IfModule>
    # END parametro facebook

    El caso es que funciona bien excepto cuando el enlace hace referencia a una entrada paginada. Pongo un ejemplo:

    Lo hace bien https://www.almendron.com/blog/el-camino-de-santiago-primitivo/
    Lo hace mal (da un 404): https://www.almendron.com/blog/el-camino-de-santiago-primitivo/3/

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • Moderador kallookoo

    (@kallookoo)

    Buenas @almendron

    Prueba este:

    
    RewriteCond %{QUERY_STRING} ^(.*[^&]+)(&?fbclid=[^&]+)(.*)$ [NC] 
    RewriteRule ^(.*)$ $1?%1%3 [R=301, L]
    

    Explicacion:

    El primer grupo captura todo pero para evitar que acabe con & añado [^&]+
    El segundo el fbclid y su piii madre.
    El tercero es por si el fbclid esta entre medio

    Te pongo un recurso para hacer pruebas: https://htaccess.madewithlove.be/

    • Esta respuesta fue modificada hace 5 años, 6 meses por kallookoo. Razón: Añado recurso
    Moderador almendron

    (@almendron)

    Buenas @kallookoo

    No me funciona 🙁

    Te dejo el enlace con el que estoy haciendo pruebas. Ten en cuenta que WP está instalado en el subdirectorio «blog»:

    https://www.almendron.com/blog/el-camino-de-santiago-primitivo/?fbclid=IwAR36MRRYrlFm9MJvWOQ6TbdHiM8wyGl21leo-dvPHauAAGVh1SZTyt28GYo

    Con el código que tengo funciona siempre bien excepto si la entrada está paginada, es decir, en lugar de ser «…/blog/nombre-de-entrada/», es «…/blog/nombre-de-entrada/3/». Si pongo la página, entonces me da un 404.

    Es como si al reconstruir la URL, quitara lo «nombre-de-entrada» y dejara solo lo «/3/».

    Esto funcionaría mal:

    https://www.almendron.com/blog/el-camino-de-santiago-primitivo/3/?fbclid=IwAR36MRRYrlFm9MJvWOQ6TbdHiM8wyGl21leo-dvPHauAAGVh1SZTyt28GYo

    • Esta respuesta fue modificada hace 5 años, 6 meses por almendron.
    Moderador kallookoo

    (@kallookoo)

    Vale,
    Prueba asi:

    
    RewriteCond %{QUERY_STRING} ^(.*[^&]+)?(&?fbclid=[^&]+)(.*)$ [NC]
    

    No conte con que no existiese ningun parametro antes del fbclid

    Te pongo el codigo entero para quede mas claro todo

    
    # BEGIN parametro facebook
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /blog/
      RewriteCond %{QUERY_STRING} ^(.*[^&]+)?(&?fbclid=[^&]+)(.*)$ [NC]
      RewriteRule ^(.*)$ $1?%1%3 [R=301, L]
    </IfModule>
    # END parametro facebook
    
    Moderador almendron

    (@almendron)

    Gracias @kallookoo

    Lo pruebo esta tarde y te digo algo.

    Moderador almendron

    (@almendron)

    Al final lo he podido probar ahora y nada. No funciona. Si pongo el código que me indicas, me da «Internal Server Error».

    Moderador kallookoo

    (@kallookoo)

    Upps, Perdona miguel
    Elimina el espacio que hay entre los flags [R=301, L] quedando asi [R=301,L]
    Lo siento pero no probe el codigo y no me di cuenta.
    Ya me diras si funciona, sino ya lo probare en mi server.

    Moderador almendron

    (@almendron)

    Perfecto 🙂

    Ya lo hace bien tanto en el test como en real.

    Muchísimas gracias.

Viendo 7 respuestas - de la 1 a la 7 (de un total de 7)
  • El debate ‘Parámetro fbclid de Facebook’ está cerrado a nuevas respuestas.