+  HandyCache форум
|-+  Главная категория» Общие вопросы» Алгоритм преобразования URL в имя файла в кэше
Имя пользователя:
Пароль:
Страниц: 1 ... 8 9 [10] 11 12 13   Вниз
  Отправить эту тему    Печать  
Автор Тема: Алгоритм преобразования URL в имя файла в кэше  (Прочитано 234141 раз)
0 Пользователей и 1 Гость смотрят эту тему.
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #180 : 05 апреля 2007, 00:37:42 »

Ну дык, только у меня пока нелады с регулярными выражениями в C#. Мутно как-то все реализовано, замена непонятно как работает...

А в Дельфи я вообще не нашел стандартной библиотеки по регулярным выражениям Грустный
Да, Microsoft в отношении мутности - впереди планеты всей!
Впрочем, я думаю, в данной ситуации можно и без RegExp обойтись! Первый символ - знак %, далее может идти только символ из диапазона 0-9 или A-F. Далее - то же самое, только надо всю найденую последовательность загнать в соотв. переменную - и далее последовательно для каждого символа из этих трёх выполнить преобразование регистра (как я понял, в Delfi есть соотв. ф-ция). Если бы я программировал на Delfi - просто написал бы соотв. код. Но программирую я на совсем другом языке, так что консультировать не могу. Хотя RegExp, тем более компилированный, на Delfi работает очень быстро (пример - HC) - так что разницу в производительности никто не заметит.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #181 : 05 апреля 2007, 10:58:31 »

Все символы из списка :;=&/ относятся к зарезервированым?
Полный перечень зарезервированных символов (все они могут выступать в качестве разделителей):
:/?#[]@!$&'()*+,;=
Эти символы нельзя заменять на их коды и наоборот, иначе можем получить совершенно другой URL.
Кстати, кто-нибудь знает, есть ли какие-либо стандарты на повторное кодирование символов в URL?
Повторное кодирование не допускается. Выражение типа %2525 может иметь место, если задать, к примеру в Яндексе поиск строки "%25". Здесь тоже кодирование одно и не "наслаивается".
Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #182 : 05 апреля 2007, 21:47:52 »

Повторное кодирование не допускается. Выражение типа %2525 может иметь место, если задать, к примеру в Яндексе поиск строки "%25". Здесь тоже кодирование одно и не "наслаивается".
Ты уверен? А почему тогда это так часто встречается?
Вот результаты поиска в логах по шаблону
%25[a-f\d]{2}

TOTAL:    33060 matches in 131 groups in 112 files
    8605  %25D0
    3052  %25D1
    1643  %252F
    1260  %2520
    1083  %25BE
    1064  %25BD
    1011  %25B5
     978  %253D
     956  %25B8
     785  %2526
     763  %25B0
     716  %2580
<... skipped ...>

Примеры:

http://www.google.ru/search?hl=ru&newwindow=1&q=%25C2%25A0&lr=

http://ru.wikipedia.org/wiki/%25D0%25AD%25D0%25BC%25D0%25B8%25D1%2580_%25D0%259A%25D1%2583%25D1%2581%25D1%2582%25D1%2583%25D1%2580%25D0%25B8%25D1%2586%25D0%25B0

http://c.microsoft.com/trans_pixel.asp?source=msdn&TYPE=PV&p=workshop_components_offline&URI=%2flibrary%2ftoolbar%2f3.0%2fasp.aspx%3fmode%3dhead%26c%3d%2fnonlibraryshell.config%26h%3dmsdn%252Emicrosoft%252Ecom%26u%3d%252Fworkshop%252Fcomponents%252Foffline%252Foffline%252Easp%26r%3dhttp%253A%252F%252Fmsdn%252Emicrosoft%252Ecom%252Fworkshop%252Fdelivery%252Foffline%252Flinkrel%252Easp%253Fframe%253Dtrue&GUID=1F4FC18C-F71E-47FB-8FC9-612F8EE59C61&r=http%3a%2f%2fmsdn.microsoft.com%2fworkshop%2fdelivery%2foffline%2flinkrel.asp%3fframe%3dtrue

http://support.microsoft.com/LTS/default.aspx?SSID=1&SiteLCID=1049&EventCollectionID=1&URL=%2fdefault.aspx&ContentType=kb&ContentLCID=1049&ContentID=910337&BrowserWidth=1024&BrowserHeight=580&BrandID=1&RefURL=kb%7c1049%7c842309%7cundefined%7cundefined%7chttp%3a%2f%2fwww.google.ru%2fsearch%3fhs%3dvb5%26hl%3dru%26client%3dfirefox-a%26rls%3dorg.mozilla%253Aru%253Aofficial%26q%3d%25D1%2584%25D0%25BE%25D0%25BD%25D0%25BE%25D0%25B2%25D0%25B0%25D1%258F%2b%25D0%25B8%25D0%25BD%25D1%2582%25D0%25B5%25D0%25BB%25D0%25BB%25D0%25B5%25D0%25BA%25D1%2582%25D1%2583%25D0%25B0%25D0%25BB%25D1%258C%25D0%25BD%25D0%25B0%25D1%258F%2b%25D1%2581%25D0%25BB%25D1%2583%25D0%25B6%25D0%25B1%25D0%25B0%2b%25D0%25BF%25D0%25B5%25D1%2580%25D0%25B5%25D0%25B4%25D0%25B0%25D1%2587%25D0%25B8%2b%25D0%25B7%25D0%25B0%25D0%25B3%25D1%2580%25D1%2583%25D0%25B7%25D0%25BA%25D0%25B0%2b%25D0%25BE%25D0%25B1%25D0%25BD%25D0%25BE%25D0%25B2%25D0%25BB%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B9%26btnG%3d%25D0%259F%25D0%25BE%25D0%25B8%25D1%2581%25D0%25BA%26lr%3d&OptionCollectionId=0&EventSeqNo=6&FlexID=&FlexValue1=&FlexValue2=&FlexValue3=&FlexValue4=mozilla%2f5.0%20%28windows%3b%20u%3b%20windows%20nt%205.0%3b%20ru%3b%20rv%3a1.8.1%29%20gecko%2f20061010%20firefox%2f2.0&FlexValue5=

« Последнее редактирование: 05 апреля 2007, 21:56:44 от popkov » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #183 : 05 апреля 2007, 22:24:54 »

Ты уверен?
Если задать  в google поисковую строку "%C2%A0", то получим первый из указанных URL. Здесь %C2%A0 совершенно справедливо воспринимается как строка, а не как закодированные данные.
Остальные URL-ы нерабочие (по крайней мере у меня в Опере).
Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #184 : 06 апреля 2007, 02:40:31 »

Михаил
Дело в том, что я не пишу URL в логи - их туда пишет HC!
И если теперь уже по запросу
 http://\S*%25[a-f\d]{2}\S*
в моих логах нашлось 1407 уникальных URL - это о чём-то говорит!

А насчёт нерабочих - вот рабочие (проверил!):

http://tbn0.google.com/images?q=tbn:P4qJidTTzOytPM:http://www.gg2.net/upload/Bill%2520Gates.jpg

http://tbn0.google.com/images?q=tbn:lLWcsYS6Mny9wM:http://www.bobbyworks.com/images/mug%2520shot%2520bill%2520gates.jpg

http://tbn0.google.com/images?q=tbn:zaDHv3KYcikJrM:http://e-consultancy.lemonfoundation.com/people/bill%2520gates,%2520dude.jpg

http://login.live.com/login.srf?lc=1033&id=1929&ru=http%3A%2F%2Fwww%2Emsnusers%2Ecom%2FDAV%5FLoginReturn%2Emsnw&tw=43200&kv=9&ct=1173608778&cb=wsredir%3Dhttp%253A%252F%252Fwww%252Emsnusers%252Ecom%252Fdav%252Emsnw%253Furi%253D%252F%252F&ems=1&kpp=1&ver=2.1.6000.1&rn=eWxErFnD&tpf=68e5347da98a85393cf5d57e6a146172

http://pics.imho.ru/Intel/Pro_Brand_apr-dec2006/04.12.06-18.12.06/200x350_lineup.swf?fdomain=citforum.ru&link1=http//body.imho.ru/event.ng/Type=click&FlightID=24294&AdID=29774&TargetID=18001&Segments=18371&Targets=18001&Values=25%2C30%2C46%2C50%2C60%2C72%2C82%2C92%2C100%2C110%2C150%2C254%2C1157%2C3842%2C4917%2C4919%2C4925%2C6649%2C7496%2C8086&RawValues=USERID%252C5113500c-2109-1164712039-1%252CGIPCOUNTRY%252CRU%252CGIPCITY%252CMoscow%252CGIPREGION%252C48&Redirect=http%3A//www.intel.com/business/enterprise/emea/rus/vpro/index.htm%253Fppc_cid%253DmrmRU2F

http://top.list.ru/counter?id=66377;t=56;js=13;r=http%3A//www.google.ru/search%3Fhl%3Dru%26q%3Dhp+ipaq+hx2410%26btnG%3D%25D0%259F%25D0%25BE%25D0%25B8%25D1%2581%25D0%25BA+%25D0%25B2+Google%26lr%3Dlang_ru;j=true;s=1024*768;d=32;rand=0.7943153505349431

http://pics.rbc.ru/rbcmill/img/cddvnpahs/fegbhbkgfusj/170-200_3.swf?link1=http%3A//banner.rbc.ru/banredir.cgi%3Fsid%3Dfirstpage_left2.20070215115319.46171%26lid%3Dfirstpage_left2%26id%3D46171%26code%3D%21http%253A%252F%252Fwww.rt.ru%252Fcorporate%252F&seed=56280

http://love.mail.ru/tips/?tip=WinkLogined&tcurl=http%3A%2F%2Flove.mail.ru%2Fmy%2Fmessage.phtml%3Faction%3DWink%26oid%3D6950733%26tcurl%3Dhttp%253A%252F%252Flove.mail.ru%252Fkc_20%253F1%253D1%2526sold%253DEqHZFC6IdPHBig8aqSGaRJ-2M__YhTdx%2526afolder%253Dself%2526winked%253D1&tburl=http%3A%2F%2Flove.mail.ru%2Fkc_20%3F1%3D1%26sold%3DEqHZFC6IdPHBig8aqSGaRJ-2M__YhTdx%26afolder%3Dself

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

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

Сообщений: 5513



« Ответ #185 : 06 апреля 2007, 11:11:35 »

А насчёт нерабочих - вот рабочие (проверил!):
Всех их объединяет одно - кодируется текстовый параметр (строка). Попробуй зайти на URL http://www.gg2.net/upload/Bill%2520Gates.jpg из первого примера - не получится. Когда речь идет о строке, обработчик воспринимает %20 не как код, а как осмысленное сочетание символов. В свою очередь, если любой URL из приведенных будет передаваться в качестве текстового параметра скрипта еще кому-нибудь, получим значения типа %252520.
А вот происхождение в твоем кэше URL
http://ru.wikipedia.org/wiki/%25D0%25AD%25D0%25BC%25D0%25B8%25D1%2580_%25D0%259A%25D1%2583%25D1%2581%25D1%2582%25D1%2583%25D1%2580%25D0%25B8%25D1%2586%25D0%25B0
интересно. Могу предположить, что он образовался также из текстового параметра скрипта при помощи списка "Переадресация" путем отсечения "вызывающего" URL.
С учетом всего этого, правило, преобразующее код типа %2525 в %25, на мой взгляд, лучше не использовать.
Сообщить модератору   Записан
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« Ответ #186 : 06 апреля 2007, 11:51:48 »

Обе ссылки нерабочие Грустный
Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #187 : 06 апреля 2007, 21:08:18 »

Попробуй зайти на URL http://www.gg2.net/upload/Bill%2520Gates.jpg из первого примера - не получится.
С учетом всего этого, правило, преобразующее код типа %2525 в %25, на мой взгляд, лучше не использовать.
Тут ты немного нарушил логику: из того, что закодированный повторно URL обрабатывается неправильно не следует, что противоположная ситуация - когда декодированный URL находится в виде параметра скрипта на месте закодированного - тоже будет обрабатываться неверно!
Попробуй зайти по ссылке:
http://tbn0.google.com/images?q=tbn:P4qJidTTzOytPM:http://www.gg2.net/upload/Bill%20Gates.jpg
- она обрабатывается сервером нормально, хоть я и декодировал знак процента!
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #188 : 06 апреля 2007, 21:56:25 »

Тут ты немного нарушил логику: из того, что закодированный повторно URL обрабатывается неправильно не следует, что противоположная ситуация - когда декодированный URL находится в виде параметра скрипта на месте закодированного - тоже будет обрабатываться неверно!
Следует, что иногда он будет обрабатываться неверно. А этого, имхо, достаточно, чтоб такие правила не вводить. Рассмотрим пример, когда в поисковике надо найти строку "xyz%45". Поисковик сформирует URL с параметром xyz%2545. Если затем мы обрежем "25", то получим "xyz%45" и с таким URL в следующий раз попадем совершенно на другую страницу - на результаты поиска строки "xyzE".

PS У меня в списке "Переадресация" есть правило .+(url|go)=http заменять на http. В свете нашего общения начинаю склоняться к мысли, что для правильной его работы необходимо добавить в белый список правило (url|go)=http.*%25 с запретом переадресации.
« Последнее редактирование: 06 апреля 2007, 22:10:07 от Михаил » Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #189 : 07 апреля 2007, 17:17:19 »

Рассмотрим пример, когда в поисковике надо найти строку "xyz%45". Поисковик сформирует URL с параметром xyz%2545. Если затем мы обрежем "25", то получим "xyz%45" и с таким URL в следующий раз попадем совершенно на другую страницу - на результаты поиска строки "xyzE".
С примером согласен, но не слишком ли он искусственен? Кому придёт в голову искать "%45" - тем более, что при таком поиске Google отбрасывает знак % - и ищет вхождения "45"? Не единственный ли это случай, когда такое может происходить?
У меня в списке "Переадресация" есть правило .+(url|go)=http заменять на http. В свете нашего общения начинаю склоняться к мысли, что для правильной его работы необходимо добавить в белый список правило (url|go)=http.*%25 с запретом переадресации.
Думаю, здесь ты прав! На RU-Board как-то обсуждалась ситуация, когда это правило неправильно работало, если знак двоеточия закодирован. В той ситуации оно всё же должно было сработать, поэтому я доработал это правило так:
#5#~#True#~#.+&(url|go)=http(:|%3a)//#~#http://#~#False#~#True
#5#~#True#~#.+/go.php\?http(:|%3a)//#~#http://#~#False#~#True

Такие правила правильно сработают в описанной тобой ситуации. Хотя, если честно, они кажутся мне наименее полезными и наиболее сомнительными из всех правил по умолчанию. Пока глюков не замечал - поэтому держу их включёнными! Попаданий довольно мало.
« Последнее редактирование: 07 апреля 2007, 18:06:27 от popkov » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #190 : 07 апреля 2007, 21:28:27 »

На мой взгляд, мы немного ушли в сторону Улыбка
Краткое резюме по функции fixURL.
Итак, при формировании исправленного URL (процедура FixURL) делаем следующее (в указанном порядке):
  - отсекаем "http://", а при включении соотв. опции - и "www."
  - переводим буквы в кодах в верхний регистр;
  - коды %41-%5A, %61-%7A, %30-%39, %2D, %2E, %5F, %7E преобразовываем в соответствующие им символы;
  - переводим все символы имени хоста в нижний регистр;
  - site.ru:XXXX<конец> заменяем на site.ru:XXXX/
  - (www.)site.ru<конец>
    site.ru:<конец>
    site.ru:/
    site.ru:80/
заменяем на site.ru/.

Все это делаем до начала проверки списков.

Кроме этого, убираем опцию "Удалять ссылку на порт 80 из имени файла в кэше" в Настройках/Кэш/Управление, т.к. в ходе работы удаляем ссылку на порт 80 всегда.
« Последнее редактирование: 07 апреля 2007, 21:39:09 от Михаил » Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #191 : 07 апреля 2007, 23:24:19 »

Краткое резюме по функции fixURL.
Итак, при формировании исправленного URL (процедура FixURL) делаем следующее (в указанном порядке):
  - отсекаем "http://", а при включении соотв. опции - и "www."
  - переводим буквы в кодах в верхний регистр;
  - коды %41-%5A, %61-%7A, %30-%39, %2D, %2E, %5F, %7E преобразовываем в соответствующие им символы;
  - переводим все символы имени хоста в нижний регистр;
  - site.ru:XXXX<конец> заменяем на site.ru:XXXX/
  - (www.)site.ru<конец>
    site.ru:<конец>
    site.ru:/
    site.ru:80/
заменяем на site.ru/.

Все это делаем до начала проверки списков.

Кроме этого, убираем опцию "Удалять ссылку на порт 80 из имени файла в кэше" в Настройках/Кэш/Управление, т.к. в ходе работы удаляем ссылку на порт 80 всегда.

Отлично! Со всем согласен, только не совсем понял, какой бывает <конец>  в
site.ru:XXXX<конец>
(www.)site.ru<конец>
site.ru:<конец>

Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #192 : 07 апреля 2007, 23:38:41 »

какой бывает <конец>  в
site.ru:XXXX<конец>
(www.)site.ru<конец>
site.ru:<конец>
Имел в виду, что URL site.ru:8787 преобразуется в site.ru:8787/
site.ru - в site.ru/
site.ru: - в site.ru/
Под тэгом <конец> имел в виду, что на этом URL заканчивается, далее ничего нет (т.е. что это полный URL, а не начало другого более обширного URL). Сорри, если не совсем понятно получилось. Проще будет так:
  - site.ru
    site.ru:
    site.ru:/
    site.ru:80
    site.ru:80/
заменяем на site.ru/.
 - site.ru:XXXX заменяем на site.ru:XXXX/
« Последнее редактирование: 07 апреля 2007, 23:47:01 от Михаил » Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #193 : 08 апреля 2007, 00:06:46 »

Теперь понятно. Только обнаружил одно НО: отбрасывать http:// надо после Переадресации, чтобы сохранялась возможность переадресовывать на другой протокол (например, FTP://) Насколько я понимаю, именно для этого автор и не стал отбрасывать http:// в Переадресации.
Хотя можно и иначе: отбрасывать ДО Переадресации, но, чтобы можно было перенаправить на другой протокол, в Переадресации (в обоих полях: Правило и Замена) делать проверку на наличие отличного от HHTP протокола (чтобы не быть ошибочно переадресованным на http://ftp://site.ru). Например, можно легко отловить название протокола правилом (RegExp):
^\w+://
При условии, что FixURL уже применён, такое простое правило безошибочно отловит все ссылки на другой протокол! И не поймает ничего лишнего!
Думаю, второй вариант даже предпочтительнее первого (который реализован в текущей версии HC).
« Последнее редактирование: 08 апреля 2007, 00:22:14 от popkov » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #194 : 08 апреля 2007, 19:49:01 »

Да, забыл про отсечение фрагментов. Итого FixURL:
  - отсекаем все, начиная с первого "#"
  - отсекаем "http://", а при включении соотв. опции - и "www."
  - переводим буквы в кодах в верхний регистр;
  - коды %41-%5A, %61-%7A, %30-%39, %2D, %2E, %5F, %7E преобразовываем в соответствующие им символы;
  - переводим все символы имени хоста в нижний регистр;
  - site.ru
    site.ru:
    site.ru:/
    site.ru:80
    site.ru:80/
заменяем на site.ru/.
  - site.ru:X заменяем на site.ru:X/
Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #195 : 11 апреля 2007, 01:07:02 »

  - отсекаем "http://", а при включении соотв. опции - и "www."
Только после Переадресации... См. мой предыдущий пост... Причём всё, что там написано, относится и к www. перед именем хоста! Иногда важно переадресовывать ссылки с www. на адреса без него! И наоборот! Это действительно важно! Иногда сайт существует в двух видах: c www. и без него! И когда залогинивешься на сайте без www., оказывается, что на его варианте с www. ты не залогинен! Единственный способ обойти этот глюк - использовать Переадресацию! Что я и делаю! Поэтому ДО Переадресации нельзя отбрасывать ни то, ни другое! Ни в коем случае!

....С остальным полностью согласен!
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #196 : 15 апреля 2007, 18:38:59 »

ты согласен, что они понятнее и проще, чем соотв. #', #( и #)
В моих глазах `` однозначно лучше #', а остальные одинаково приемлемы.
Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #197 : 15 апреля 2007, 21:21:59 »

В моих глазах `` однозначно лучше #', а остальные одинаково приемлемы.
Наконец-то в этой теме слышу высказывание в пользу ясности и здорового вкуса!

Спасибо!
« Последнее редактирование: 15 апреля 2007, 21:26:37 от popkov » Сообщить модератору   Записан
v0lt
Beta tester
*****

Репутация: +7/-0
Offline Offline

Сообщений: 127


« Ответ #198 : 19 апреля 2007, 23:32:11 »

Михаил
Цитировать
- отсекаем "http://", а при включении соотв. опции - и "www."
popkov
Цитировать
Только после Переадресации...
В моем алгоритме "http://" отбрасывается для удобства (неважно какой введен урл с "http://" или без) и для последующего сравнения результата.

Если после Fix_URL() будет "Переадресация", то естественно отбрасывать не следует. Хотя и не факт стоит ли вообще Fix_URL ставить до Переадресации.

Поясню. Если мы сильно исправим урл (Михаил: - коды %41-%5A, %61-%7A, %30-%39, %2D, %2E, %5F, %7E преобразовываем в...) и у нас сработает Переадресация, то браузер запросить у сервера такой урл, который тот не найдет у себя.
(вышеприведенные коды допустимы и сервер может ждать именно их, а не соответствующие символы).

Новая версия алгоритма:
измения v1.3 beta 3:
- в коде появились регулярные веражения  :Улыбка
fix_URL:
- коды вида %XX всегда в верхнем регистре
- после имени хоста отбрасывается ":80" и ":" (пустой порт)
URL2File:
- заглавные буквы (A..F) в кодах %XX не помечаются
File2URL:
- коды вида %XX переводятся в верхний регистр

* URL2filename_ver1_3beta3.zip (21.68 Кб - загружено 48 раз.)
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #199 : 20 апреля 2007, 00:14:50 »

Если мы сильно исправим урл (Михаил: - коды %41-%5A, %61-%7A, %30-%39, %2D, %2E, %5F, %7E преобразовываем в...) и у нас сработает Переадресация, то браузер запросить у сервера такой урл, который тот не найдет у себя.
(вышеприведенные коды допустимы и сервер может ждать именно их, а не соответствующие символы).
Это те символы, которые как ни меняй их на коды и обратно - получим полностью эквивалентный URL, и запрос будет гарантированно отправлен туда же и с теми же параметрами и так же понят сервером. Потому и в FixURL гарантированно можно заменять коды только этих символов, а все остальное будет при необходимости заменять URL2FileName.
А если правило в Переадресации прописывать криво, то и сейчас не попадем по желанному адресу (но я не думаю, что ты это имел ввиду).
Если же я чего не так понял, приведи, плиз, пример.

Теперь про хттп://. Если я правильно представляю, оно отбрасывается и сейчас при проверке любого списка, кроме Переадресации. Хотя на практике с такой необходимостью я не встречался, но смысл оставления http:// для Переадресации теоретически может иметь место. Пусть так все и останется в отношении отрезания http://. Т.е. до проверки всех списков нормализуем URL с помощью процедуры FixURL без отрезания http://. "Переадресации" отдаем этот нормализованный URL, а остальным спискам - его же без ведущего http://.

Только вот непонятно при всем этом еще одно: если список "Переадресация" чувствителен к http://, то как может быть нечувствителен к нему Белый список, в котором мы прописываем исключения для "Переадресации"? Имхо, это недоработка.
« Последнее редактирование: 20 апреля 2007, 00:57:00 от Михаил » Сообщить модератору   Записан
Страниц: 1 ... 8 9 [10] 11 12 13   Вверх
  Отправить эту тему    Печать  

 
Перейти в: