2015-07-05 23:42:28 6208次浏览 1条回答 1 悬赏 10 金钱

网站的根目录是 /aurora/
然后有五个应用,blog + foumn + shop + back + front
back应用是项目的后台,管理blog+foumn+shop,
front应用是blog+foumn+shop的用户中心页面(前台管理嘛),相当于back的功能
现在问题是解决url硬编码的问题,其中blog+foumn+shoap有时会需要

/aurora/back/index.php?r
/aurora/front/index.php?r

的url需求,
然后我发现
//假设在blog应用中
Yii::$app->urlManage->createUrl('');
//结果是 
/aurora/blog/web/index.php?r=

//然后加了一个配置
//in blog config
        'frontUrl' => [
            'class' => 'yii\web\urlManager',
            'baseUrl' => '/aurora/front/web'
        ],
//然后在blog的view中
Yii::$app->frontUrl->createUrl('');
//兴高采烈的以为会
/aurora/front/web/index.php?r=
//发现依旧是
/aurora/blog/web/index.php?r=

//看了源码之后发现是(在 yii\web\UrlManager)
$baseUrl = $this->showScriptName || !$this->enablePrettyUrl ? $this->getScriptUrl() : $this->getBaseUrl();
导致这种效果

大家有没有好的解决方法:
感谢任何建议。
很明显我不会增加这些配置的


'enablePrettyUrl' => true,
'showScriptName' => false,

最佳答案

  • qq3737002 发布于 2015-07-06 08:14 举报

    echo '/api' . Url::toRoute('/site/index')
    返回/api/index.php?r=site/index
    这样不就行了

    2 条回复
    回复于 2015-07-06 12:44 回复

    分数给你吧

            'fronturl'=>[
                'class'=>'yii\web\UrlManager',
                'scriptUrl'=>'/aurora/front/web/index.php',   //设置了这个之后就能够启作用了
                'showScriptName'=>true,
                'enablePrettyUrl'=>false,
            ],
            
    
    回复于 2015-07-06 22:09 回复

    谢谢,不过如果你非要放到一个域名下面,我建议还是用模块比较好.我看你的地址

    /aurora/back/index.php?r
    /aurora/front/index.php?r
    

    感觉是不是少了web这一层?

    /aurora/back/web/index.php?r
    /aurora/front/web/index.php?r
    

    然后就是启用url美化后,你会各种头疼

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
jackz
主管

jackz

注册时间:2015-06-10
最后登录:2018-08-02
在线时长:10小时6分
  • 粉丝6
  • 金钱255
  • 威望30
  • 积分655

热门问题