如何在重写引擎打开的情况下获取yii中的模块的URL路径?

时间:2013-05-17 09:17:57

标签: .htaccess yii yii-extensions yii-components

您好,感谢您的阅读。

我安装了yii用户模块,并尝试使用以下代码链接到配置文件页面;

 'url' => Yii::app()->getModule('user')->profileUrl),

在我的main.php中,我有以下内容;

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

在我的htaccess文件中我有这个;

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

它可以工作,我被重定向到http://localhost/spob/user/profile,但当我在另一个链接到我的受保护/视图的链接时,例如'url' => array('employercontract/index')),我得到以下错误Error 404 Unable to resolve the request "user/employercontract/index".正确的路径将是没有用户路径的http://localhost/spob/employercontract/index

我认为问题可能在main.php中,我宣布规则,任何建议都会非常感谢我一整个上午都在努力解决这个问题

1 个答案:

答案 0 :(得分:3)

如果我理解你的正确......

尝试替换此

'url' => array('employercontract/index'))

用这个

'url' => array('/employercontract/index'))

注意斜杠。这将告诉UrlManager应该根据站点根目录创建链接。没有它 - 链接基于当前模块(在您的情况下是用户模块)。

我希望这会有所帮助。