2015-05-29 23:47:46 14755次浏览 3条回答 2 悬赏 5 金钱

我在apache下设置的,

.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`

在web.php配置中添加

'urlManager' => [
    'class' => 'yii\web\UrlManager',
    // Disable index.php
    'showScriptName' => false,
    // Disable r= routes
    'enablePrettyUrl' => true,
    'rules' => [
        "<controller:\w+>/<action:\w+>/<id:\d+>"=>"<controller>/<action>",
        "<controller:\w+>/<action:\w+>"=>"<controller>/<action>",
    ],
],

但打开网站的时候,提示错误:

Invalid Call – yii\base\InvalidCallException

Setting read-only property: yii\web\Application::urlManager

想知道这个是哪里的问题的? apache的配置应该是没有任何问题的。

另外,在nginx下又是如何配置的?

最佳答案

  • xiaobai 发布于 2015-06-08 12:04 举报

    我找到正确的答案了,正确是在web.php里components的里面写上

    'components' => [
            'urlManager' => [
                //'class' => 'yii\web\UrlManager',
                'enablePrettyUrl' => true,
                'showScriptName' => false,
                'rules'=>[
                    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                ],
            ],
        ],
    
    1 条回复
    回复于 2016-12-05 14:14 回复

    解决了我的问题,就赞你!

    , 觉得很赞
  • 回答于 2015-06-08 11:44 举报

    遇到同样的问题,你解决了吗?

  • 回答于 2015-10-13 20:37 举报

    我的还是不行
    'urlManager' => [

                 'enablePrettyUrl' => true,
           'showScriptName' => false,//隐藏index.php
            //‘enableStrictParsing‘ => false,
          //  'suffix' => '.html',//后缀,如果设置了此项,那么浏览器地址栏就必须带上.html后缀,否则会报404错误
            'rules' => [
                  //  '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ],
         ],
    

    Options +FollowSymLinks

    IndexIgnore */*
    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
    
您需要登录后才可以回答。登录 | 立即注册
cfanbo
见习主管

cfanbo

注册时间:2015-05-23
最后登录:2015-09-10
在线时长:11小时52分
  • 粉丝2
  • 金钱110
  • 威望0
  • 积分220

热门问题