Re: Помогите пожалуйста написать реврайт!

Igor Sysoev igor на sysoev.ru
Вс Июн 13 13:37:03 MSD 2010


On Sun, Jun 13, 2010 at 12:30:52AM -0400, Craken wrote:

> Здравствуйте товарищи!
> Проблема вот в чем!
> Ставлю у себя на ресурсе "фильтр" ссылок! Ресурс на пхп! В качестве "фильтрирования" использую preg_replace(); !
> И вот тут возникла проблема! После "переобразования" ссылка получает вид: http://mysite.com/link.php?l=http://site.com
> то есть как Вы поняли, mysite.com - это мой сайт, а вот site.com - это сайт на который идет ссылка!
> В файле link.php происходит куча проверок и (например) если это ссылка на картинку, тэг не может отобразить такую ссылку! Пришлось писать реврайт чтобы ссылка была такого плана http://mysite.com/linkhttp://site.com, прошу обратить внимание на вставку "link", она нужна :)
> И так... что получилось (сильно прошу не бить):
> [code]
> rewrite ^/link(.*)([0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM,./]*)$ /link.php?l=$1 last;
> [/code]
> Вроде как все должно работать.... но все стало как-то не так отображаться, и я через link.php вывел ссылку, и ссылка у меня получилась такого плана:
> http://mysite.com/link.php?l=http:/site.com
> (для того кто не заметил: в адресе один слеш!)
> Всем заранее Спасибо! 
> С Уважением, Алексей!

Здравствуй товарищ Алексей!
Проблема вот в чем!
nginx объединяет несколько подряд идущих слэшей в один!
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#merge_slashes
Кстати! Вот это:
([0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM,./]*)
Можно заменить на вот это:
([\w,./]*)


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru