在Yii中重写URL

时间:2012-04-16 12:22:27

标签: url-rewriting yii

我想使用此网址www.example.com/detail/post访问Yii中的网址。

我应该能够将此网址处理为具有值detail的参数的操作post,或者具有指定参数detail和值post的某个操作

我阅读了有关createUrl的Yii文档,但无法理解。

2 个答案:

答案 0 :(得分:2)

我认为这就是你要找的:

将main.php更新为以下内容(将控制器/详细信息部分中的控制器更改为控制器的名称)

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'rules' => array(
            'detail/<post:\d+>'=>'controller/detail',
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
     ),
),

所以基本上你告诉Yii格式详细信息/编号中的任何请求都将转到您的控制器并使用“详细信息”操作然后传递一个名为“post”的变量。

答案 1 :(得分:0)

如果您启用了mod重写并希望将以下内容放在htaccess文件中

php_value upload_max_filesize 1M
DirectoryIndex index.php

Options +FollowSymlinks
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

并将以下内容添加到config / main.php文件中的“urlManager”数组中:

'showScriptName'=>false,

将从您的网址中删除index.php并确保仅以domain.com/controller/action

的形式显示网址