Php 删除前端/web后不显示Yii2图像

Php 删除前端/web后不显示Yii2图像,php,yii2,yii2-advanced-app,Php,Yii2,Yii2 Advanced App,我已经应用了pretty URL并从URL中删除了frontend/web,但图像不起作用 帮助访问前端上的图像 我引用了这个来创建漂亮的URL 代码:myapp/.htaccess Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/myapp/(assets|css|images) RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] Rewrit

我已经应用了pretty URL并从URL中删除了frontend/web,但图像不起作用

帮助访问前端上的图像

我引用了这个来创建漂亮的URL

代码:myapp/.htaccess

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/myapp/(assets|css|images)  
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteCond %{REQUEST_URI} !^/myapp/(frontend|backend)/web/(assets|css)/ 
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ frontend/web/index.php/$1 [L]
代码:/myapp/frontend/config/main.php

use \yii\web\Request;

$baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());

$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php'),
    require(__DIR__ . '/params-local.php')
);


return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'frontend\controllers',

    'components' => [
        'request' => [
            'csrfParam' => '_csrf-frontend',
            'class' => 'common\components\Request',
            'web'=> '/frontend/web'
        ],
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
            'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
        ],
        'session' => [
            // this is the name of the session cookie used for login on the frontend
            'name' => 'advanced-frontend',
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],


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

                         '<alias:login|logout|signup>' => 'site/<alias>',   
                          'users'=>'user/index',                                             
                      ],
                ],
        ],
    'params' => $params,
];
use\yii\web\Request;
$baseUrl=str_replace('/frontend/web',''(新请求)->getBaseUrl();
$params=array\u merge(
require(_DIR__.'/../common/config/params.php'),
require(_DIR__.'/../common/config/params local.php'),
require(_DIR__.'/params.php'),
require(_DIR__.'/params local.php'))
);
返回[
“id'=>“应用程序前端”,
'basePath'=>dirname(_udir__;),
'bootstrap'=>['log'],
“controllerNamespace”=>“前端\控制器”,
“组件”=>[
“请求”=>[
“csrfParam”=>“\u csrf-frontend”,
'class'=>'common\components\Request',
“web”=>“/frontend/web”
],
“用户”=>[
'identityClass'=>'common\models\User',
“enableAutoLogin”=>true,
'identityCookie'=>['name'=>'\u identity-frontend','httpOnly'=>true],
],
“会话”=>[
//这是用于在前端登录的会话cookie的名称
“名称”=>“高级前端”,
],
“日志”=>[
'traceLevel'=>YII_调试?3:0,
“目标”=>[
[
'class'=>'yii\log\FileTarget',
“级别”=>[“错误”,“警告”],
],
],
],
'errorHandler'=>[
“errorAction”=>“站点/错误”,
],
“urlManager”=>[
“enablePrettyUrl”=>true,
'showScriptName'=>false,
“规则”=>[
''=>'站点/',
“用户”=>“用户/索引”,
],
],
],
“params”=>$params,
];
试试这个:
request->baseUrl?>/img/image1.jpg“>
编辑
简单地像这样应用漂亮的URL:

  • 删除您在
    myapp
    中创建的.htaccess文件,并在
    myapp/backend/web
    myapp/frontend/web
    文件夹中创建另一个文件,如下所示:
  • 重新启动发动机

    重写cond%{REQUEST_FILENAME}!-f

    重写cond%{REQUEST_FILENAME}!-d

    RewriteRule.index.php

  • common/config/main.php
    中添加urlManager组件,如下所示:

    <?php echo Html::img('@web/images/test.png', []); ?>
    

  • 删除您在
    myapp/frontend/config/main.php中创建的urlManager组件
  • 现在,我认为您将很容易获得以下图像:
  • @web
    是当前运行的web应用程序(前端/web)的基本URL。它的值与
    yii\web\Request::$baseUrl
    相同

    因此,您应该获得如下图像:

    <?php echo Html::img('@web/images/test.png', []); ?>
    
    
    

    
    

    假设您的web目录中有一个文件夹“images”,其中包含您的图像(示例中为test.png)

    我尝试过这个方法,但未找到404错误图像,这意味着问题来自其他地方。请更新您的问题并添加代码,以便我们可以看到您应用pretty URL和从URL中删除frontend/web的方式(后端和前端)URL重写规则写在common/config/main.phpI中。我们已经尝试过了,但是找不到404错误图像。您能告诉我它现在将显示的确切路径吗