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

NetWood

Lotus team
17.04.2008
372
19
#1
Всем привет!
Небольшой проблем.
С некоторых пор Яндекс ввел параметр _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=* или отключить внешнюю интернет-статистику в кампании, но хотелось бы поправить.
 
Последнее редактирование модератором:

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#2
сделать замену "?" на другой символ, старая вроде фича
 

NetWood

Lotus team
17.04.2008
372
19
#3
сделать замену "?" на другой символ, старая вроде фича
DominoXURLProcess = 1 не решит эту проблему, поскольку URL входящий.
Вот тут
Для просмотра контента необходимо: Войти или зарегистрироваться
Дмитрий пишет что ему удалось победить замену параметров, но я не совсем понимаю как он это сделал. Давно не брал в руки шашку :(. В common.js на каждую страницу добавлять код?
 

NetWood

Lotus team
17.04.2008
372
19
#4
Итак, господа, проблем имеет следующее решение: Требуется специально написанная библиотека для 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 году на решение этой проблемы потребовалось пару недель и вот пришло время ее использовать, в том числе, и мне.
 

Вложения

Последнее редактирование модератором:

Gandliar

Lotus team
16.02.2004
341
8
#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=* или отключить внешнюю интернет-статистику в кампании, но хотелось бы поправить.
Я думаю, что надо просто правильно написать замену, несколько правил
типа

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

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