Yii - 从URL中删除'index'

时间:2012-07-17 20:15:02

标签: php url seo yii

如何从index

中删除http://localhost/dashboard/index/create

我的urlManager设置如下:

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

这为我提供了像http://localhost/dashboard这样的干净网址,其中dashboard是一个名为indexController的默认控制器的模块。

现在,我遇到的问题是,如果没有先放index,我就无法访问模块控制器的其他操作。例如,如果我想在actionCreate内调用indexController,我总是有说http://localhost/dashboard/index/create

有什么方法可以摆脱index,只需这样称呼它:http://localhost/dashboard/create

这是我在main.php

中配置模块的方式
'modules' => array(
    ...
    'dashboard' => array(
        'defaultController' => 'index'
    ),
    ...
),

提前谢谢: - )

2 个答案:

答案 0 :(得分:3)

尝试像这样安排你的数组(把你的urlManager组件下的仪表板开头的行):

array(
  ...
  'components' => array(
    ...
    'urlManager' => array(
      ...
        'rules' => array(
          'dashboard/<action:\w+>' => 'dashboard/index/<action>'
      ),
    ),
  ),
);

答案 1 :(得分:0)

您可以为此创建.htaccess file

RewriteEngine on
RewriteBase /project_folder_NAME
# 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