как удалить /? fbclid = ... в nuxt url - PullRequest
0 голосов
/ 13 февраля 2020

Привет! Я хочу удалить параметр аналитики Facebook c Принудительный URL-адрес /?fbclid= https://www.example.com/?fbclid=..., из URL-адреса моего хоста, при перенаправлении с Facebook, щелкнув URL-адрес, возникает проблема с nuxt-link-точным-активным класс не применяется, если перенаправлен с этим параметром. Спасибо

Ответы [ 3 ]

1 голос
/ 20 февраля 2020

В простых случаях, таких как https://www.example.com/?fbclid=..., где fbclid является единственным параметром, он должен быть тривиальным Javascript, например:

 <script>
  // ideally this is on top of page; works on bottom as well

  if(/^\?fbclid=/.test(location.search))
     location.replace(location.href.replace(/\?fbclid.+/, ""));

 </script>

Проверяет, является ли ?fbclid=... параметр поиска URL-адреса и перемещается в то же место, в котором удалена эта часть.


Также может быть целесообразно удалить любой параметр поиска и не проверять fbclid.
 <script>
   if(location.search) location.replace(location.href.replace(/\?.+/, ""));
 </script>
1 голос
/ 20 февраля 2020

Для простых случаев, таких как https://www.example.com/?fbclid=..., где fbclid является первым и единственным параметром, это можно сделать с помощью простой конфигурации сервера.

Так, например, укажите это в .htaccess file:

RewriteEngine on
<if "%{QUERY_STRING} =~ /^fbclid=/">
 RewriteRule  .  %{REQUEST_URI}?   [R=301,L]
</if>

Обратите внимание на ? после %{REQUEST_URI}. Он полностью удаляет строку запроса.


В других случаях (где fbclid был добавлен к другим параметрам) этот пример ничего не делает - для этого требуется более сложный код.
0 голосов
/ 13 февраля 2020

я мог бы наконец решить это следующим образом:

methods: {
  removeFacebookHook() {
    var fbParam = 'fbclid';

    // Check if param exists
    if (location.search.indexOf(fbParam + '=') !== -1) {
      var replace = '';

      try {
        var url = new URL(location);
        url.searchParams.delete(fbParam);
        replace = url.href;

        // Check if locale exists
        if (window.location.href.indexOf(this.locale) > -1) {
          window.history.replaceState(null, null, "/" + this.locale);
        };

      } catch (ex) {
        var regExp = new RegExp('[?&]' + fbParam + '=.*$');
        replace = location.search.replace(regExp, '');
        replace = location.pathname + replace + location.hash;
      }

      history.replaceState(null, '', replace);
    }
  }
}

с помощью этого поста modiyf urls Я поддерживаю локаль маршрута nuxt-i18n, работающую с href.indexOf! К сожалению, nuxt AlwaysRedirect заставил меня удалить переключатель ...

...