markoffk
(Belseller)
1
конфиг:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'profile/<id:\d+>'=>'profile/index',
'profile/*'=>'/',
)
),
ссылка вида http://localhost/kisstown/profile/106 на холокосте работает, а в инете - нет:
Страница не найдена
Системе не удалось найти запрашиваемое действие "160".
Запрошенная страница не найдена на сервере. Если вы ввели адрес страницы вручную, проверьте правильность его написания и повторите попытку.
Если вы считаете, что это ошибка настройки сервера, обратитесь по адресу the webmaster.
СПАСИТЕ МЕНЯ!!!!!!
Смысл в том, что Yii не трансформирует обратно сгенеренный урл в экшн
andy_s
(Arekandrei)
2
Если дома работает, а на серваке нет, значит нужно искать разницу… С htaccess и mod_rewrite там всё в порядке?
markoffk
(Belseller)
3
на серваке работает все кроме обратного формирования экшна из правила. если никакие правила не задавать все норм. Но мне надо правила юзать
markoffk
(Belseller)
4
Последний глубокий анализ кода фреймворка:
СUrlManager.php метод parseUrl:
if(($r=$rule->parseUrl($this,$request,$pathInfo,$rawPathInfo))!==false) {
//echo 'this=' . $this . '<br/>';
//echo 'request=' . $request . '<br/>';
$xxx = isset($_GET[$this->routeVar]) ? $_GET[$this->routeVar] : $r;
echo '$r=' . $xxx . '<br/>';
print_r($_GET);
echo 'pathInfo=' . $pathInfo . '<br/>';
echo 'rawPathInfo=' . $rawPathInfo . '<br/>';
echo isset($_GET[$this->routeVar]) ? $_GET[$this->routeVar] : $r;
return isset($_GET[$this->routeVar]) ? $_GET[$this->routeVar] : $r;
}
print_r($_GET) - в $_GET на локалхосте переменной $_GET[‘r’] нету, а на серваке - есть.
markoffk
(Belseller)
5
да, вы были правы, криво натроенный .htaccess. Проблема решена. Тему можно закрыть. Спасибо