Я давно использую ISAPI_Rewrite v2 для перезаписи URL. Сайт на иврите, поэтому URL-адреса страниц. ISAPI_Rewrite v2 не поддерживает символы иврита, но я решил эту проблему, используя код UTF-8 (Hex) для символов иврита. Вот пример:
RewriteRule ^/\%D7\%A6\%D7\%95\%D7\%A8_\%D7\%A7\%D7\%A9\%D7\%A8/$ /Contact.aspx [L,I]
RewriteRule ^/\%D7\%A6\%D7\%95\%D7\%A8_\%D7\%A7\%D7\%A9\%D7\%A8$ /Contact.aspx [L,I]
Проблема: при проверке моих популярных страниц в statcounter я наткнулся на этот URL:
http://mysite.com/%u05F6%u05E5%u05F8_%u05F7%u05F9%u05F8
Это то же правило URL, что и в моем примере, но в Unicode! И, по-видимому, ISAPI_Rewrite v2 не обрабатывает эти URL-адреса, и я, пользователь, получаю «Страница не может быть найдена».
Есть также более сложные страницы, например, отправляющие часть URL-адреса в качестве параметра запроса. Которые также в Unicode.
Я думаю только об одном решении - сделать те же правила, на этот раз в Unicode и иметь дело с Unicode в коде позади. Но есть 2 проблемы с решением:
- URL отображается для пользователя в Юникоде, а не на иврите.
- Больше кода в коде, за которым, на мой взгляд, быть не нужно. Я имею в виду, что этот сценарий можно/нужно обработать до того, как он достигнет кода.
Есть предположения?
Спасибо.
EDIT: Может быть, это перенаправление можно как-то выполнить с помощью IIS6? Когда IIS идентифицирует URL-адрес Unicode, он преобразует его в UTF-8 и перенаправляет страницу.