По остальным пунктам настроил, а с этими ссылками гребаными никак. Modrewrite включен, серв настроен, т.е. изначально ЧПУ настроены, но сейчас они имеют вид site.ru/film/4.html, а хочется по чулавечески чтоб было, вроде этого -site.ru/film/Сайлент Хилл 2.html - к примеру. Очень надеюсь на вашу помощь, спасибо
Page 1 of 1
Настройка Чпу не работает
#1
Posted 01 February 2013 - 01:22 AM
Доброе утро всем, эт снова я
Помогите пожалуйста настроить ЧПУ. За основу взял yiiframework.com/extension/seo/, там первый абзац - SeoRecordBehavior. Все подключил вроде как нужно, но прикол в том что оно не работает, вообще.... Т.е. никаких ошибок не выдает, но и ссылки вообще не меняются
По остальным пунктам настроил, а с этими ссылками гребаными никак. Modrewrite включен, серв настроен, т.е. изначально ЧПУ настроены, но сейчас они имеют вид site.ru/film/4.html, а хочется по чулавечески чтоб было, вроде этого -site.ru/film/Сайлент Хилл 2.html - к примеру. Очень надеюсь на вашу помощь, спасибо
По остальным пунктам настроил, а с этими ссылками гребаными никак. Modrewrite включен, серв настроен, т.е. изначально ЧПУ настроены, но сейчас они имеют вид site.ru/film/4.html, а хочется по чулавечески чтоб было, вроде этого -site.ru/film/Сайлент Хилл 2.html - к примеру. Очень надеюсь на вашу помощь, спасибо
#2
Posted 01 February 2013 - 07:46 AM
Сразу оговорюсь что с этим модулем работать не приходилось.
Он точно обещает изменять ссылки? А как вы эти ссылки генерируете, через $this->createURL()?
А если вбить в браузер site.ru/film/Сайлент Хилл 2.html то получается 404 или идет правильный редирект action?
Он точно обещает изменять ссылки? А как вы эти ссылки генерируете, через $this->createURL()?
А если вбить в браузер site.ru/film/Сайлент Хилл 2.html то получается 404 или идет правильный редирект action?
#3
Posted 01 February 2013 - 09:15 AM
Спасибо что откликнулись, а то я уж думал на этом форуме вообще живых нет
http://localhost/film/Сайлент Хилл 2.html - пишет
Error 404
Системе не удалось найти запрашиваемое действие "СайлентХилл2".
http://localhost/fil...йлентХилл2.html - тоже самое. По идеи да, я не со всем уверен, но насколько я понял он вытаскивает название(в моем случае) из БД, а затем подставляет в url, точнее должен подставить. Но интерестно то что вообще ничего не происходит, ошибок нет, но и не работает, вообщем странно это
Делаю так:
Прописываю в модели film (Заменил name на title, т.к. насколько я понял это столбцы БД, id, title - id и заголовок новости соответственно в моей таблице)
Затем в UrlManager, файле main.php добавляю правило для ссылок
Так, я понял, сорри за мою тупость,
, буду благодарен, если подскажите 
Вот только не пойму как вам репутацию поднять
http://localhost/film/Сайлент Хилл 2.html - пишет
Error 404
Системе не удалось найти запрашиваемое действие "СайлентХилл2".
http://localhost/fil...йлентХилл2.html - тоже самое. По идеи да, я не со всем уверен, но насколько я понял он вытаскивает название(в моем случае) из БД, а затем подставляет в url, точнее должен подставить. Но интерестно то что вообще ничего не происходит, ошибок нет, но и не работает, вообщем странно это
Делаю так:
Прописываю в модели film (Заменил name на title, т.к. насколько я понял это столбцы БД, id, title - id и заголовок новости соответственно в моей таблице)
public function behaviors()
{
return array(
array(
'class'=>'application.components.SeoRecordBehavior',
'route'=>'model/view',
'params'=>array('id'=>$this->id, 'name'=>$this->title),
);
}Затем в UrlManager, файле main.php добавляю правило для ссылок
'model/<id:\d+>-<name>.html'=>'model/view',
Так, я понял, сорри за мою тупость,
$model->getUrl(array('foo'=>'bar') нужно прописать в view.php, правильно ? Только вот я так понимаю значения foo, bar нужно на свои сменить, а вот на какие Вот только не пойму как вам репутацию поднять
#4
Posted 01 February 2013 - 10:58 AM
Вы должны понимать что у ЧПУ как минимум две составляющие. Первая- трансляция адресной строки в имя контроллера и экшена, этим занимается UrlManager и правило
Когда уже работает первый пункт, можно переходить к второму- програмной генерацией ссылок.
'model/<id:\d+>-<name>.html'=>'model/view'означает, что адрес /model/23-Silent+hill.html будет направлена в контроллер model действие view. Вам наверное будет правильнее написать правило:
'film/<id:\d+>-<name>.html'=>'film/view'и проверить в браузере ссылку /film/23-Silent+hill.html она не должна выдавать 404 а должна отрендерить film/view передав в него переменные $_GET['id'] (23) и $_GET['name'] (Silent hill)
Когда уже работает первый пункт, можно переходить к второму- програмной генерацией ссылок.
$model->getUrl(array('foo'=>'bar') этот метод уже передает переменную id- берет её из модели, а вместо 'foo'=>'bar' вам наверное надо 'name'=>$model->title
#6
Posted 01 February 2013 - 12:57 PM
Значит докладываю. В файле main.php прописал как вы и говорили:
Затем в модели film.php прописал:
Ну и прописал в /views/film/view.php
Только ссылка это как вкопанная там так и висит
Проверил, как вы и говорили
- вбиваем в строке браузера запрос обрабатывается корректно, т.е. все работает, если же перейти по ссылки с главной страницы, опять получаем
Я так пологаю здесь где-то ошибка, но что поправить не знаю, уже все перепробовал, как только можно
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
// 'urlSuffix'=>'.html',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'film/<id:\d+>-<name>.html'=>'film/view', // Добавил правило как вы говорили
),
),
Затем в модели film.php прописал:
public function behaviors()
{
return array(
array(
'class'=>'application.components.SeoRecordBehavior',
'route'=>'film/view',
'params'=>array('id'=>$this->id, 'name'=>$this->title),
),
);
}
Ну и прописал в /views/film/view.php
$model->getUrl(array('name'=>$model->title));
Только ссылка это как вкопанная там так и висит
http://localhost/film/4
Проверил, как вы и говорили
Quote
- вбиваем в строке браузера запрос обрабатывается корректно, т.е. все работает, если же перейти по ссылки с главной страницы, опять получаем
http://localhost/film/4
Я так пологаю здесь где-то ошибка, но что поправить не знаю, уже все перепробовал, как только можно
$model->getUrl(array('name'=>$model->title));
#7
Posted 01 February 2013 - 01:05 PM
А попробуйте разместить правило 'film/<id:\d+>...' самым первым, перед '<controller:\w+>/<id:\d+>'=>'<controller>/view'
#9
Posted 01 February 2013 - 04:00 PM
Вообщем не знаю насколько это верно, но. Убрав из view.php
И переделав заголовок в файле _view.php следующим образом
Я получил то что хотел. На оригинальность, правильность не претендую, возможно мои мучения были не напрасны, и кому либо это пригодится. Все же хотел бы услышать что думаете вы по этому поводу, насколько это правильно/неправильно
ОГРОМНОЕ СПАСИБО Charger за помощь в оживлении данного расширения. Я спать...
$model->getUrl(array('name'=>$model->title));И переделав заголовок в файле _view.php следующим образом
<a href="<? echo $data->getUrl(array('name'=>$data->title)); ?>"><?php echo $data->title ?></a>Я получил то что хотел. На оригинальность, правильность не претендую, возможно мои мучения были не напрасны, и кому либо это пригодится. Все же хотел бы услышать что думаете вы по этому поводу, насколько это правильно/неправильно
ОГРОМНОЕ СПАСИБО Charger за помощь в оживлении данного расширения. Я спать...
#10
Posted 02 February 2013 - 06:47 AM
Неясно. Лениво настраивать тестовый проект.
Может стукните мне в скайп или асю (в профиле указаны) и через TeamViewer вместе подебажим.
Может стукните мне в скайп или асю (в профиле указаны) и через TeamViewer вместе подебажим.
Share this topic:
Page 1 of 1

Help












