Htaccess RewriteRule для приема специальных символов

Моя переделка htaccess должна обрабатывать следующие сценарии:

Моя текущая конфигурация .htaccess:

RewriteRule ^dictionary/([\w\+]{2,50})$ /words.php?q=$1 [QSA,L]

Он не распознает специальные символы, например: ñ, ó.

Есть идеи? Спасибо!


person Andres SK    schedule 30.11.2011    source источник


Ответы (3)


Окончательное решение

RewriteRule ^dictionary/([^/.]+)$ /words.php?q=$1 [QSA,L]
person Andres SK    schedule 06.12.2011

Добавьте % к классу символов в вашем выражении:

RewriteRule ^dictionary/([\w+%]{2,50})$ /words.php?q=$1 [QSA,L]

Или вы могли бы даже использовать [^/]{2,50}.

Специальные (что-то вроде [^A-Za-z0-9_]) символы кодируются клиентом по запросу. Обратите внимание, что åäö станет 9 символами, и даже один å будет проходить через это выражение. Если вы хотите разрешить 50 специальных символов, используйте {2,150} и проверьте обе стороны диапазона в вашем PHP-коде после декодирования строки (что, я думаю, делается для вас автоматически).

person Qtax    schedule 30.11.2011

Лучше преобразовать строку в механизм кодирования URL по умолчанию. Насколько мне известно, запрос к URL-адресу № 1 не может быть выполнен без кодирования URL-адреса. Также декодирование будет выполняться на стороне сервера, поэтому вам не нужно об этом беспокоиться. Если вы используете какой-либо фреймворк или скрипт на стороне сервера, я бы предложил передать pantalón через POST, а не получить.

Вы можете использовать пост jquery http://api.jquery.com/jQuery.post/

Если вы все еще хотите пройти через GET :

Как обрабатывать специальные символы в правилах .htaccess?

Также имейте в виду, что URL-адреса будут закодированы.

person Gaurav Shah    schedule 30.11.2011
comment
это должно быть сделано через GET, потому что это должен быть доступный URL-адрес. Итак, что было бы лучше, если бы htaccess принимал символы % и +? - person Andres SK; 30.11.2011