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

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

Метки:
  1. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Всем привет!
    Небольшой проблем.
    С некоторых пор Яндекс ввел параметр _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.047
    Симпатии:
    18
    сделать замену "?" на другой символ, старая вроде фича
     
  3. NetWood

    NetWood Lotus team
    Lotus team

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

    NetWood Lotus team
    Lotus team

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

    Далее:
    1. dfc.nsf бросается в корень Domino/data и в ней создаются необходимые правила index2.png
    2. DLL - в папку Domino где лежат все остальные dll.
    3. В конфиг-доке сервера для сайта необходимо указать имя библиотеки без раcширения .dll
    index.png
    4. Перезапустить задачу http как te http quit+lo http. http restart не подойдет, так как DSAPI в этом случае не подхватывается.
    5. При удачном пуске в консоли сервера должно появиться следующее волшебное окошко.
    index4.png
    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. Профит — теперь мы можем создавать любые правила для контроля над содержанием урла со слешом или без оного. Содержимое логов можно настраивать.
    index5.png
    Однако есть несколько минусов.
    1. Эта связка работает только для одного сайта если он сконфигурирован на сервере. Для нескольких сайтов потребуется создавать или N DLL и привязывать к конкретной базе с правилами dfc_N.nsf или немного переписывать библиотеку знающим СИ. Дополнительно потребуется Visual Studio 2008.
    2. Совсем невкусное. Решение имеет коммерческую составляющую, в которой я лично принимал участие. Владельцем исходных кодов и автором базы является Dmytro Pastovenskyi <dpastov@gmail.com> и можно задать ему вопрос в случае необходимости использования этого решения. К слову, он мне здорово помог и научил самостоятельно делать DDL-ки.

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

    Вложения:

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

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

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

    Gandliar Well-Known Member

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

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

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

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