+  HandyCache форум
|-+  Главная категория» Общие вопросы» Настройки списков "Переадресация" и "Преобразование URL"
Имя пользователя:
Пароль:
Страниц: [1] 2 3  Все   Вниз
  Отправить эту тему    Печать  
Автор Тема: Настройки списков "Переадресация" и "Преобразование URL"  (Прочитано 33601 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« : 30 апреля 2007, 00:54:55 »

Вызывает недопонимание необходимость использования колонки "Обязательный" в списках А и П. В списке П я ей реального применения не нашел. В списке А - только для декодирования нового URL (его, имхо, можно организовать автоматически и полностью средствами НС).
Дайте, плиз, кто может, примеры полезного использования этих колонок.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #1 : 30 апреля 2007, 19:26:24 »

Дайте, плиз, кто может, примеры полезного использования этих колонок.

Посмотри в "Дефолтных списках"...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #2 : 30 апреля 2007, 19:41:45 »

DenZzz
Ничего для себя не вынес кроме того, что в списке А первое правило нерабочее. Полезность правила 4 списка "А" и 3 правила списка "П" мне непонятна. Поясни, плиз.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #3 : 30 апреля 2007, 20:01:24 »

DenZzz
Ничего для себя не вынес кроме того, что в списке А первое правило нерабочее.

Вполне рабочее!

Цитировать
Полезность правила 4 списка "А" и 3 правила списка "П" мне непонятна. Поясни, плиз.

Это способ группировки правил. Необязательные правила проверяются, только если выше сработало их обязательное правило. Необязательное правила доделывают то, что нельзя или сложно было сделать одним обязательным правилом.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #4 : 30 апреля 2007, 20:08:29 »

Вполне рабочее!
Если я правильно понимаю, оно включает URL-ы, аналогичные URL-ам из следующего правила (url=http). Но при этом %3A, %2F и %3F не декодируются, т.к. относятся к правилу 2. Или не так? Если они не декодируются, то получим заведомо нерабочий URL.
Цитировать
Это способ группировки правил. Необязательные правила проверяются, только если выше сработало их обязательное правило. Необязательное правила доделывают то, что нельзя или сложно было сделать одним обязательным правилом.
Примерно так и представляю себе исходя из документации, но вот конкретное применение кроме декодирования найти не могу. Поясни, плиз назначение конкретных правила 4 списка "А" и 3 правила списка "П". Или еще какой-нибудь пример.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #5 : 30 апреля 2007, 21:36:47 »

Если я правильно понимаю, оно включает URL-ы, аналогичные URL-ам из следующего правила (url=http). Но при этом %3A, %2F и %3F не декодируются, т.к. относятся к правилу 2. Или не так? Если они не декодируются, то получим заведомо нерабочий URL.

Так. Это правило приведено для примера и оно задумывалось для URL типа:
http://site.ru/redirect.cgi?go=http://site2.ru


Цитировать
Примерно так и представляю себе исходя из документации, но вот конкретное применение кроме декодирования найти не могу. Поясни, плиз назначение конкретных правила 4 списка "А" и 3 правила списка "П". Или еще какой-нибудь пример.

Что тут пояснять? Оба правила подчищают "хвосты", оставшиеся после работы обязательного правила.

Например, в списке "П" правило 3 подчищает конечный "?" после отбрасывания сессий в URL типа:
http://www.site2.ru/forums/index.php?s=edbd593b7fd425cd19b8a711ecb38dea
и при этом не "портит" URL:
http://www.site1.ru/forums/index.php?s=edbd593b7fd425cd19b8a711ecb38dea&t=10516
« Последнее редактирование: 30 апреля 2007, 21:43:41 от DenZzz » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #6 : 30 апреля 2007, 22:10:21 »

Так. Это правило приведено для примера и оно задумывалось для URL типа:
http://site.ru/redirect.cgi?go=http://site2.ru
М-да... Т.е. оно заведомо ненужное? Зачем его включать в дефолтные списки? У меня оно стабильно дает показатель 0 срабатываний. А если б сработало, то наверняка неправильно, т.к. нет декодирования. Имхо, надо его или исключить, или объединить со следующим, сделав (go|url).
Беда в том, что когда мы придумаем еще одно правило на эту тему, то для него неизбежно придется повторять все правила, относящиеся к декодированию.
Предлагаю ввести колонку типа "Декодировать" с чекбоксом. Если отмечено галкой, то заменять в оставшемся URL все знаки %XX на их символьное представление.
Цитировать
Что тут пояснять? Оба правила подчищают "хвосты", оставшиеся после работы обязательного правила.

Например, в списке "П" правило 3 подчищает конечный "?" после отбрасывания сессий в URL типа:
http://www.site2.ru/forums/index.php?s=edbd593b7fd425cd19b8a711ecb38dea
и при этом не "портит" URL:
http://www.site1.ru/forums/index.php?s=edbd593b7fd425cd19b8a711ecb38dea&t=10516
Это правило (для сессий) можно составить так, чтоб подчищать ничего не приходилось, чему есть наглядный пример в списках NapA.
Просто имеется ощущение, что колонка "Обязательный" применяется только для декодирования. Если это так, то ее надо, имхо, вовсе убрать.

PS В правиле для сессий судя по всему содержится ошибка: ?<= надобно заменить на ?=
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #7 : 30 апреля 2007, 22:30:39 »

Это правило (для сессий) можно составить так, чтоб подчищать ничего не приходилось, чему есть наглядный пример в списках NapA.

Ты об этом:
True#~#(\?|&)(phpsessid|s(id)?)=[^&]{5,}$|(\?|&)(phpsessid|s(id)?)=[^&]{5,}&#~#\4#~#True#~#True#~#0

Именно из-за его "наглядных" повторов внутри одного правила я и разбил его на 2 более коротких:
True#~#(?<=[?&])(session(_sid)?|(phpses)?s(id)?)=[-a-f\d]{7,}($|&)#~##~#False#~#True#~#0
True#~#[?&]$#~##~#False#~#False#~#0

которые охватывают гораздо больше вариантов обозначений сессий!

Цитировать
PS В правиле для сессий судя по всему содержится ошибка: ?<= надобно заменить на ?=

Ты ошибаешься! В твоей редакции это правило вообще не сможет работать!
« Последнее редактирование: 30 апреля 2007, 23:01:37 от DenZzz » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #8 : 01 мая 2007, 04:26:12 »

DenZzz
Цитировать
Ты ошибаешься! В твоей редакции это правило вообще не сможет работать!
Да, я сразу подумал про возможность другой реализации (см. ниже) и лишь потом увидел, что у тебя по-другому.
В твоем случае точно так же можно легко обойтись одним правилом:
#5#~#True#~#(?=[?&]((session(_sid)?|(phpses)?s(id)?)=[-a-f\d]{7,}))(.\1$|(.)\1&)#~#\7#~#False#~#True

Ну да не об этом. А о том, что в переадресации может быть намного более одного правила, вытаскивающего из URL редирект. Практически каждое из них требует перекодирования этого нового URL. Чтоб делать это сейчас, необходимо сразу за каждым таким правилом писать раскодирующие правила, которые:
- не гарантируют полноты раскодирования (всего не упомнишь)
- занимают много места
- требуют дублирования в полном объеме после каждого основного правила.
Стоит, имхо, подумать над необходимостью добавления в ТуДу "Пришить колонку чекбоксов "Декодировать" в списке А". Можно возложить эту головную боль на НС.
А практическая полезность колонки "Обязательный" в списке П так и остается для меня сомнительной. Непонимаю
« Последнее редактирование: 01 мая 2007, 04:53:38 от Михаил » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #9 : 01 мая 2007, 13:05:06 »

- требуют дублирования в полном объеме после каждого основного правила.

Можно декодирующие правила написать один раз в конце списка!
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #10 : 01 мая 2007, 13:39:20 »

Можно декодирующие правила написать один раз в конце списка!
В качестве необязательных?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #11 : 01 мая 2007, 14:22:59 »

В качестве необязательных?

Да, хоть как! Чтобы каждый URL не прогонять, можно выше поставить обязательное правило с проверкой наличия "%"...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #12 : 02 мая 2007, 21:48:58 »

Да, хоть как! Чтобы каждый URL не прогонять, можно выше поставить обязательное правило с проверкой наличия "%"...
Не понял тебя. Приведи пример.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #13 : 03 мая 2007, 08:18:55 »

Не понял тебя. Приведи пример.

Например, можно сделать все эти декодирующие правила обязательными и поставить их в конце списка - тогда все URL будут прогоняться через эти правила.

А можно, например, сделать их необязательными и выше поставить одно обязательное правило, которое будет срабатывать на наличие в URL кодов символов ("%") - тогда нижеидущие необязательные правила будут проверяться только для URL с кодами.
Сообщить модератору   Записан
Кирилл
Beta tester
*****

Репутация: +5/-1
Offline Offline

Сообщений: 124


« Ответ #14 : 03 мая 2007, 09:55:55 »

2 DenZZZ
Так прямо нельзя - испортятся URL в параметрах.
Разве что декодировать только ДО знака вопроса
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #15 : 03 мая 2007, 11:31:12 »

Так прямо нельзя - испортятся URL в параметрах.
Разве что декодировать только ДО знака вопроса

Как напишешь правило, так будет! Надо до знака вопроса - укажи это в правиле!
Значит, твои правила будут начинаться как-то так: ^[^?]+%
« Последнее редактирование: 03 мая 2007, 12:01:11 от DenZzz » Сообщить модератору   Записан
Кирилл
Beta tester
*****

Репутация: +5/-1
Offline Offline

Сообщений: 124


« Ответ #16 : 03 мая 2007, 11:54:47 »

2 DenZZZ
Не так просто. Поскольку параметры (они все после знака вопроса) терять нельзя - знак вопроса придется учитывать и в каждом декодирующем правиле. Отсюда простой вывод - декодирующие правила не универсальны и в нынешней реализации использованы верно.

Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #17 : 03 мая 2007, 12:00:22 »

Не так просто. Поскольку параметры (они все после знака вопроса) терять нельзя - знак вопроса придется учитывать и в каждом декодирующем правиле. Отсюда простой вывод - декодирующие правила не универсальны и в нынешней реализации использованы верно.

Очень просто! Например, вот такое простенькое обязательное правило в конце списка:
#5#~#True#~#%2f(?=.*\?)#~#/#~#True#~#True
преобразует все "%2f" до знака "?", а после него не трогает!
Сообщить модератору   Записан
Кирилл
Beta tester
*****

Репутация: +5/-1
Offline Offline

Сообщений: 124


« Ответ #18 : 03 мая 2007, 12:24:26 »

2 DenZZZ
Правильно Улыбка Только чисто редиректорный вариант (там знак вопроса можно не учитывать) - проще, меньше, эффективнее. Чем мне и нравится.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #19 : 03 мая 2007, 12:37:10 »

Кирилл

Вернемся к первому посту топика - тебе лично нужна колонка "Обязательный" или нет?
Сообщить модератору   Записан
Страниц: [1] 2 3  Все   Вверх
  Отправить эту тему    Печать  

 
Перейти в: