Apache2: проблемы, соответствующие символам с диакритикой в использовании строки запроса RewriteCond & RewriteRule

Для проверки суммы байтов в настоящее время доступной энтропии использовать

cat /proc/sys/kernel/random/entropy_avail

Энтропийный блок 4 096 байтов шириной, который может очень быстро быть истощен.

Используя этот маленький 'readspeed' инструмент (http://1wt.eu/tools/readspeed/), можно иметь размеры, как быстро энтропийный блок заполнен различными методами.

Например, запуск:

$ ./readspeed < /dev/random

и переместите свою мышь. Вы будете видеть, что 'readspeed' порожняя тара энтропийный блок, как только это заполнено, и когда Вы перемещаете мышь, она заполняется немного.

Пробуя различные методы, кажется, что ввод с клавиатуры и движения мыши являются большей частью efficients для пополнения того блока. Сетевые передачи и копии жесткого диска не имеют большого влияния.

Наконец, существуют энтропийные доступные устройства поколения, такие как этот: http://www.entropykey.co.uk/.

2
задан 26 March 2013 в 19:15
3 ответа

Вы можете использовать RewriteMap, чтобы выполнить удаление за вас. вот так:

RewriteMap unescape int:unescape

RewriteCond %{QUERY_STRING}  (location|place)=(.*)
RewriteCond ${unescape:%2}   café
RewriteRule ^/find/$         /find/1234? [L,R]

Во второй строке RewriteCond я использую% 2, так как% 1 будет содержать либо «location», либо «place».

Однако добавление большого количества RewriteRules в вашу конфигурацию для преобразования слов в числа будет сильно снижать производительность вашего сервера, и его будет сложно поддерживать. Лучшее решение - использовать для этого RewriteMap.

Например, предположим, что /etc/apache2/places.txt содержит:

café    1234
shop   1235
...

Тогда это сработает для вас:

RewriteMap unescape int:unescape
RewriteMap places   txt:/etc/apache2/places.txt

RewriteCond %{QUERY_STRING}  (location|place)=(.*)
RewriteCond ${unescape:%2}   (.*)
RewriteRule ^/find/$         /find/${places:%1}? [L,R]

Вы также можно использовать RewriteMap на основе запроса к базе данных. Это был бы мой предпочтительный выбор, поскольку тогда я мог бы переложить задачу сопоставления слов и чисел на систему управления контентом.

Более подробную информацию вы можете найти в документации: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap

1
ответ дан 3 December 2019 в 11:48

Ваше /? Place = café будет закодировано в браузере на /? Place = caf% C3% A9 , и это то, что вы должно совпадать.

1
ответ дан 3 December 2019 в 11:48

В вопросе , связанном с , кто-то предложил использовать RewriteMap для вызова внешней программы для перезаписи URL.

Также: Возможно, запрос действительно действительно что-то совсем другое? Браузер мог внутренне преобразовать акцентированные символы в кодировку ASCII в URL-адресе? Например, «% 20 », а не «».

0
ответ дан 3 December 2019 в 11:48

Теги

Похожие вопросы