Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > mod_rewrite искажает данные


Автор: lxx 16.12.2009, 19:34
Приветствую!
Пытаюсь в CGI-скрипт на перле передать c использованием mod_rewrite некоторые параметры. Латинские символы и числа передаются нормально, однако коды спецсимволов тупо исчезают из передаваемых данных.
Скрипт:
Код
#!/usr/bin/perl
use CGI;
$cgi = CGI->new();
print $cgi->header();
print $cgi->param('param');


Вызываю http://localhost/cgi-bin/script.pl?param=C%2B%2B
В ответ, как и положено, получаю надпись C++.

Создаю файл .htaccess следующего содержания:
Код
RewriteEngine On
RewriteRule ^param/(.*?)$ /cgi-bin/script.pl?param=$1


Вызываю http://localhost/param/C%2B%2B
И получаю в ответ C.

Внимание, вопрос! Куда пропало %2B%2B и как с этим бороться?

ЗЫ: Подстановка в RewriteRule флага NE не исправила ситуацию.

Автор: boltayka 18.12.2009, 16:32
Похожая проблема была... http://forum.vingrad.ru/forum/topic-282711.html


попробуй в .htaccess
заменить (.*?) на ([^/\.]+)


з.ы. Если не поможет - допиши [L] - по идее будет работать

Автор: lxx 18.12.2009, 19:13
В ходе экспериментов выяснилось, что пропадают только коды символов + и #.
boltayka, это тоже пробовал, не помогло.
Нашел два варианта решения:
1. Выполнять подстановку внаглую из %{THE_REQUEST}
2. Использовать флаг B
http://2lx.ru/2009/12/mod_rewrite-i-peredacha-specsimvolov/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)