реврайт...

Sky_Flex

Новичок
реврайт...

Вот правило реврайта:
RewriteRule ^search/([\ \-\_а-яА-Яa-zA-Z0-9]+)(/?)$ world.php?n=$1

что должно читаться как: "В начале строки должно стоять слово search/ далее покрайней мере один раз любая буква, пробел, тире или нижнее подчеркивание и далее может быть а может и не быть косой черты"

Обрабатывается все правильно.... кроме "-", если ссылку м тире дать - то выдает что не может найти такую страницу...
Как подправить правило чтобы знак тире "-" воспринимался???
 

Sky_Flex

Новичок
Боьшое спасибо. А почему тире именно в заключении?
и еще: [NC] - означает любая буква(строчная или заглавная)?

...и еще одна непонятка:
когда передаю гетом руские буквы(про) вот так:
header("Location:http://sait/files/search/".$_GET['str']."/");
то браузер интерпретирует строчку так:
http://supermobile.ru/files/search/%EF%F0%EE/

а если по ссылке перехожу:
<a href=\"".$abs."search/".$word."/\">
то браузер интерпретируе строку как:
http://www.supermobile.ru/files/search/про/
и уже документ не находит....
ПОЧЕМУ ТАК???
 

iliah

Новичок
'-' задает диапазон символов, т.е. для указания самого символа '-' нужно поместить его к конце класса

[NC] - регистронезависимость ( как модификатор i в pcre)
 

_RVK_

Новичок
для указания самого символа '-' нужно поместить его к конце класса
В общем случае, служебные символы в классах должны распологаться так, что бы выражение не трактовалось двояко.

По второй непонятке.
1. Не нужно использовать русских букв.
2. Различие в том что в первом случае ты используешь массив $_GET значения которого уже сконвертированы.
 

_RVK_

Новичок
2. Различие в том что в первом случае ты используешь массив $_GET значения которого уже сконвертированы
Вот написал я это, а потом понял что у меня нет четкого понимания по данному вопросу.
Вообще, для конвертации русских символов используются функции [m]urlencode[/m], [m]urldecode[/m] и подобные им. Но даже если их не использовать зачастую все работает нормально. Так вот, кто и на каком этапе занимается автоматической конвертацией недопустимых симолов(браузер, сервер, PHP). Когда нужно применять вышепреведенные функции, а когда нет.
Раньше, почему-то не уделял внимания этому вопросу используя эти функции там, где возникали проблеммы, не разбираясь в их причинах.
 
Сверху