无需在/config/main.php中配置urlManager即可构建URL

时间:2015-03-01 15:43:14

标签: php yii yii-url-manager

我希望能够在URL上映射明确的字符串值,例如'index.html',例如mydomain / index.php?r = page / view& id = 1。 ID /值对应存储在数据库中,因此/config/main.php中的硬编码urlManager规则不适合我的目的。 我正在使用yii-1.1.16。

2 个答案:

答案 0 :(得分:1)

尝试将url-manager更改为:

'urlManager'=>array(
    'urlFormat'=>'path',
    'urlSuffix'=>'.html',
    'caseSensitive'=>false
    'rules'=>array(
        'pattern1'=>array('<controller:page>/<action:view>/<id:\d+>', 
    ),  

),

这可能会有所帮助。

<强>更新

如果您想将/index.php/page/view/id/1网址映射到mydomain/about.html,则需要执行以下工作:

1.从网址中删除index.php :要删除index.php,您可以轻松引用this link。然后,您需要在httpd.conf中启用apache RewriteModule。

2.在url-manager中添加规则:我更新了url-manager规则,现在看起来像这样:

'urlManager'=>array(
     'urlFormat'=>'path',
     'showScriptName' => false,
     'urlSuffix'=>'.html',
     'caseSensitive'=>false
     'rules'=>array(
         'about'=>'page/view/id/1',
         'pattern1'=>array('<controller:page>/<action:view>/<id:\d+>',
),  

),

请注意,无需在所有网址管理器规则中重复index.php。 祝你好运!

答案 1 :(得分:0)

现在我尝试使用伪造的网址后缀。

'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(
            'pattern1'=>array('<controller:page>/<action:view>/<id:\d+>', 
            'urlSuffix'=>'.html', 'caseSensitive'=>false)
        ),
    ),

当我输入网址'/index.php/page/view/id/1'时,它保持不变。 'mydomain / index.php / page / view / id / 2'而不是'mydomain / 1.html'