yii url经理有2个参数

时间:2015-02-16 01:57:16

标签: php .htaccess yii yii-url-manager

我想创建一个这样的网址: http://domain.com/index.php/hir/2015-02-12/news_title

以下是我的网址管理员:

 '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

2 个答案:

答案 0 :(得分:1)

无需.htaccess文件,您可以通过url-manager解决此问题。只需更改您的第一个网址管理器规则:

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

我认为这会对你有帮助。

答案 1 :(得分:1)

您的网址格式几乎正确无误。

<date:\d+>不允许使用您的日期格式(yyyy-mm-d)。因为你给了正则表达式\d,这是[0-9]的简写。它不允许{date}日期字符串中的hyphen sign

所以,更改正则表达式,它可以允许你的日期格式。

我可以建议:在 urlManager 中使用<date:[\w-]+>代替<date:\d+>