Для проверки суммы байтов в настоящее время доступной энтропии использовать
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/.
Вы можете использовать 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
Ваше /? Place = café
будет закодировано в браузере на /? Place = caf% C3% A9
, и это то, что вы должно совпадать.
В вопросе , связанном с , кто-то предложил использовать RewriteMap
для вызова внешней программы для перезаписи URL.
Также: Возможно, запрос действительно действительно что-то совсем другое? Браузер мог внутренне преобразовать акцентированные символы в кодировку ASCII в URL-адресе? Например, «% 20
», а не «».