ЧПУ

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

ЧПУ

Сообщение PaSiS »

Заезженная тема, но тем не менее поиск не особо помог :(

Есть простой сайт с несколькими статьями. Сейчас они располагаются по таким адресам: sitename.ru/?r=site/article&id=xx.
Пытаюсь сейчас сделать их доступными по адресу вида sitename.ru/xx, т.е. просто по id. Других материалов, контроллеров или действий все равно нету.
Сейчас urlManager выглядит так:

Код: Выделить всё

'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array(
                '<id:\d+>'=>'site/article',
),
Скорее всего не правильно, т.к. это не работает.

Прошу помощи в организации такой, вроде не сложной, задачи.

P.S. Еще такой вопрос: ссылки на материалы создаются в виджете через CHtml::link, будут ли они приведены в вид ЧПУ, или нужно будет использовать другой метод?
Аватара пользователя
smertnik77
Сообщения: 53
Зарегистрирован: 2010.11.25, 07:25

Re: ЧПУ

Сообщение smertnik77 »

'site/article/<id:\d+>'=>'site/article'

Наверно так.
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: ЧПУ

Сообщение PaSiS »

smertnik77 писал(а):'site/article/<id:\d+>'=>'site/article'

Наверно так.
Не помогло :(
Аватара пользователя
smertnik77
Сообщения: 53
Зарегистрирован: 2010.11.25, 07:25

Re: ЧПУ

Сообщение smertnik77 »

'site/article/<id:\d+>'=>'site/article' Это если id число,
'site/article/<id:\w+>'=>'site/article' Это если id строка

Может в этом дело?
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: ЧПУ

Сообщение PaSiS »

smertnik77 писал(а):'site/article/<id:\d+>'=>'site/article' Это если id число,
'site/article/<id:\w+>'=>'site/article' Это если id строка

Может в этом дело?
С регулярными выражениями я знаком. Все id у меня - числа.

Я вот думаю, а может ли быть дело в .htaccess. Сейчас он такой:

Код: Выделить всё

Options +FollowSymLinks
IndexIgnore */*
<IfModule mod_rewrite.c>
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>
(пример из официального дока)
Аватара пользователя
smertnik77
Сообщения: 53
Зарегистрирован: 2010.11.25, 07:25

Re: ЧПУ

Сообщение smertnik77 »

Я в .htaccess не силен, мой не на локалхосте выглядит так:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php
Аватара пользователя
PaSiS
Сообщения: 88
Зарегистрирован: 2011.11.15, 18:07
Контактная информация:

Re: ЧПУ

Сообщение PaSiS »

Извиняюсь, была синтаксическая ошибка в конфиге.
Вот так все работает:

Код: Выделить всё

'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array(
                '<id:\d+>'=>'site/article',
        ),
),
Спасибо за помощь!
Ответить