yii менеджер URL с 2 параметрами

Я хотел бы создать такой URL-адрес: http://domain.com/index.php/hir/2015-02-12/news_title

Вот мой urlmanager, что не работает:

 'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
        'hir/<date:\d+>/<title:\w+>'=>'news/view',
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
  ),

А вот мой .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>
RewriteEngine on

person Siki-Siki    schedule 16.02.2015    source источник


Ответы (2)


Нет необходимости в файле .htacces, вы можете решить это с помощью url-manager. Просто измените свое первое правило url-manager следующим образом:

'hir/<date:\d+>/<title:\w+>'=>'news/view' TO 'hir/<date>/<title>'=>'news/view'

Я думаю, это поможет вам.

person hamed    schedule 16.02.2015

Ваш шаблон URL почти правильный.

Но <date:\d+> не позволит использовать ваш формат даты (гггг-мм-д). Потому что вы указали Regex \d, что является сокращением для [0-9]. Это не позволит hyphen sign, который находится в вашей строке даты.

Итак, измените регулярное выражение, которое может разрешить ваш формат даты.

Я могу предложить: используйте <date:[\w-]+> вместо <date:\d+> в вашем urlManager.

person Hearaman    schedule 16.02.2015