【问题标题】:Yii2 not found assetsYii2 未找到资产
【发布时间】:2019-11-30 01:37:13
【问题描述】:

Yii2 未找到资产。

设置从地址/前端/web到站点根目录的转发。

.htaccets

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /    
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
    RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
    RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L]
    RewriteCond %{REQUEST_URI} !^/backend/web/(assets|js|css|js)/
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^.*$ backend/web/index.php [L]
    RewriteCond %{REQUEST_URI} ^assets
    RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
    RewriteCond %{REQUEST_URI} ^css
    RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
    RewriteCond %{REQUEST_URI} ^js
    RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
    RewriteCond %{REQUEST_URI} ^images
    RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
    RewriteRule ^(.*)$ frontend/web/$1 [L]
    RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/
    RewriteCond %{REQUEST_URI} !index.php
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ frontend/web/index.php
</IfModule>

main.php

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '' => 'site/index',         
        '<action>'=>'site/<action>',
    ],
],
    'assetManager' => [
         'basePath' => '@webroot/assets',
         'baseUrl' => '@web/assets'
    ],  
    'request' => [
        'baseUrl' => ''
    ]

一切正常,但样式不行。

【问题讨论】:

  • 请给/frontend/assets/AppAsset.php文件$basePath$baseUrl路径?
  • 参考Yii2. Access to higher level folder。也许有帮助。
  • /frontend/assets/AppAsset.php - namespace frontend\assets; use yii\web\AssetBundle; class AppAsset extends AssetBundle { public $basePath = '@webroot'; public $baseUrl = '@web'; public $css = [ 'frontend/web/css/site.css', ]; public $js = [ ]; public $depends = [ 'yii\web\YiiAsset', 'yii\bootstrap\BootstrapAsset', ]; }
  • 我按照here 所示做了,但没有帮助

标签: apache .htaccess mod-rewrite yii2 yii2-advanced-app


【解决方案1】:

这对我有用,试试看

 Options +FollowSymlinks
RewriteEngine On

# deal with administrator first
RewriteCond %{REQUEST_URI} ^/projects/YiiRestful/(administrator)
RewriteRule ^administrator/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^administrator/css/(.*)$ backend/web/css/$1 [L]

RewriteCond %{REQUEST_URI} !^/projects/YiiRestful/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/projects/YiiRestful/(administrator)
RewriteRule ^.*$ backend/web/index.php [L]


RewriteCond %{REQUEST_URI} ^/projects/YiiRestful/(assets|css|images)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteRule ^js/(.*)$ frontend/web/js/$1 [L] 
RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]

RewriteCond %{REQUEST_URI} !^/projects/YiiRestful/(frontend|backend)/web/(assets|css|images)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php

前端配置

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'suffix' => '.html',
            'rules' => [
            ],
        ],

      //access Frontend from backend
        'urlManagerFrontend' => [
            'class' => 'yii\web\urlManager',
            'baseUrl' => '@frontend/web',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                //['?r=site%2Fconcept' => '/site/concept']
            ],
        ],

common/config/bootstrap.php

Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');

后台配置

'request' => [
            'csrfParam' => '_csrf-backend',
            'class' => 'common\components\Request',
            'web'=> '/backend/web',
            'adminUrl' => '/administrator'
        ],

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
    ],

    //access Frontend from backend
    'urlManagerFrontend' => [
        'class' => 'yii\web\urlManager',
        'baseUrl' => 'http://localhost/projects/YiiRestful',
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            //['?r=site%2Fconcept' => '/site/concept']
        ],
    ],

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多