На некоторых хостингах, где уж очень пекутся о безопасности, мод может не работать, если в ссылке знак "?" не находится сразу за ".php" или ".html" и встречается в ссылке несколько раз. Т.е. если ссылка имеет вид:
CODE:http://moi.site?site.ru/?var=1
, получим 403-ю ошибку (доступ запрещен).
Почему подозрение именно на уклон в безопасность: там далеко не все "фокусы" могут проходить с chmod-ами, не все можно через .htaccess крутить и пр.
Пока вижу такое решение, поправьте, если не прав:
1) Передавать ссылку в виде переменной, т.е. в
common.php вместо
CODE:$fm->out_redir = 'rd.php?';
делаем
CODE:$fm->out_redir = 'rd.php?site=';
2) в самом скрипте вывода ссылок урл-энкодить заранее:
CODE:...<a href="'.$fm->out_redir.urlencode("http://site.ru/?var=1").'</a>...
3) в rd.php возвращать ссылку в исходный вид:
CODE:<?php
if(isset($_GET['site']))
{
header('Location: '.str_replace('&', '&', urldecode($_GET['site'])));
exit;
}
Плюсы, как мне видится, в том, что работает везде, корректно отрабатывают ссылки с кириллическими именами, избавляемся от java в rd.php. Кстати, можно в rd.php назад вернуть проверку на корректность ссылки, но большой надобности, ИМХО, нет.