Решено Правило замена для веб сайта без слеша не работает (?_openstat=)

Тема в разделе "Lotus - Программирование", создана пользователем NetWood, 25 ноя 2015.

Наш партнер Genesis Hackspace
Метки:
  1. NetWood

    NetWood Well-Known Member
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    345
    Симпатии:
    6
    Всем привет!
    Небольшой проблем.
    С некоторых пор Яндекс ввел параметр _openstat= для статистики. Он ломится на сайт приблизительно так
    25.11.2015 12:36:53 HTTP Web Server: Invalid URL Exception [/base.nsf/pages/art8825?_openstat=bWFya2V0L...&frommarket=https%3A//market.yandex.ru/search.xml%3Fcvredirect%3D2%26text%3D%25D1...
    Сайт сконструирован так, что не во всех урлах я добавляю в конце ?open. Переделывать лениво ибо очень много. Пытаюсь создать правило замену в доке сервера для сайта
    Тип правила: Замена
    Шаблон для входящих URL-адресов: ?_openstat=
    Строка замены: ?open&_openstat=
    Нихрена не работает. Ставил перед и /(хотя какой там слеш - это часть урла) и * не помогает. te http restart протирал. Какие есть мысли?

    p.s. Сервер 8.5.2. Все правила замены начинающиеся со слеша, например /webdb -> /base.nsf работают нормально уже год так пятый или шестой.

    p.p.s. Почитал. Народ вообще предлагает кардинально openstat банить через Disallow: /*openstat=* или отключить внешнюю интернет-статистику в кампании, но хотелось бы поправить.
     
    #1 NetWood, 25 ноя 2015
    Последнее редактирование модератором: 25 ноя 2015
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.109
    Симпатии:
    19
    сделать замену "?" на другой символ, старая вроде фича
     
  3. NetWood

    NetWood Well-Known Member
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    345
    Симпатии:
    6
    DominoXURLProcess = 1 не решит эту проблему, поскольку URL входящий.
    Вот тут http://dpastov.blogspot.ru/2013/03/rewriting-url-in-domino-using-dsapi.html Дмитрий пишет что ему удалось победить замену параметров, но я не совсем понимаю как он это сделал. Давно не брал в руки шашку :(. В common.js на каждую страницу добавлять код?
     
  4. NetWood

    NetWood Well-Known Member
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    345
    Симпатии:
    6
    Итак, господа, проблем имеет следующее решение: Требуется специально написанная библиотека для DSAPI фильтра, которая работает в паре с базой правил dfc.nsf и фильтрует все входящие URL. По состоянию на декабрь 2015 года библиотека существует в двух ипостасях: dsapifilter_v16x86.dll и dsapifilter_v16x64.dll.

    Далее:
    1. dfc.nsf бросается в корень Domino/data и в ней создаются необходимые правила Правило замена для веб сайта без слеша не работает (?_openstat=)
    2. DLL - в папку Domino где лежат все остальные dll.
    3. В конфиг-доке сервера для сайта необходимо указать имя библиотеки без раcширения .dll
    Правило замена для веб сайта без слеша не работает (?_openstat=)
    4. Перезапустить задачу http как te http quit+lo http. http restart не подойдет, так как DSAPI в этом случае не подхватывается.
    5. При удачном пуске в консоли сервера должно появиться следующее волшебное окошко.
    Правило замена для веб сайта без слеша не работает (?_openstat=)
    6. В логах сервера вместо ошибки будет появляться месадж
    18.12.2015 11:06:06 URL Handler: There is no error page for (сайт)500
    18.12.2015 11:29:31 URL Handler: There is no error page for (сайт)404
    7. Профит — теперь мы можем создавать любые правила для контроля над содержанием урла со слешом или без оного. Содержимое логов можно настраивать.
    Правило замена для веб сайта без слеша не работает (?_openstat=)
    Однако есть несколько минусов.
    1. Эта связка работает только для одного сайта если он сконфигурирован на сервере. Для нескольких сайтов потребуется создавать или N DLL и привязывать к конкретной базе с правилами dfc_N.nsf или немного переписывать библиотеку знающим СИ. Дополнительно потребуется Visual Studio 2008.
    2. Совсем невкусное. Решение имеет коммерческую составляющую, в которой я лично принимал участие. Владельцем исходных кодов и автором базы является Dmytro Pastovenskyi <dpastov@gmail.com> и можно задать ему вопрос в случае необходимости использования этого решения. К слову, он мне здорово помог и научил самостоятельно делать DDL-ки.

    p.s. В далеком 2011 году на решение этой проблемы потребовалось пару недель и вот пришло время ее использовать, в том числе, и мне.
     

    Вложения:

    • Правило замена для веб сайта без слеша не работает (?_openstat=)
      index3.png
      Размер файла:
      5 КБ
      Просмотров:
      18
    #4 NetWood, 18 дек 2015
    Последнее редактирование модератором: 18 дек 2015
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.194
    Симпатии:
    308
    звучит :)
     
  6. Gandliar

    Gandliar Well-Known Member
    Lotus team

    Регистрация:
    16 фев 2004
    Сообщения:
    280
    Симпатии:
    1
    Я думаю, что надо просто правильно написать замену, несколько правил
    типа

    /webdb*?_openstat* -> /base.nsf*?open&_openstat*
    /webdb/*?_openstat* -> /base.nsf/*?open&_openstat*
    /webdb/*/*?_openstat* -> /base.nsf/*/*?open&_openstat*

    принцип что слева и справа одинаковое количество звездочек
     
Загрузка...

Поделиться этой страницей