Htaccess RewriteRule для принятия специальных символов - PullRequest
3 голосов
/ 30 ноября 2011

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 06 декабря 2011

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

RewriteRule ^dictionary/([^/.]+)$ /words.php?q=$1 [QSA,L]
1 голос
/ 30 ноября 2011

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

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

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

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

0 голосов
/ 30 ноября 2011

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

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

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

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

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

...