Php 删除前端/web后不显示Yii2图像
我已经应用了pretty URL并从URL中删除了frontend/web,但图像不起作用 帮助访问前端上的图像 我引用了这个来创建漂亮的URL 代码:myapp/.htaccessPhp 删除前端/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
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错误图像。您能告诉我它现在将显示的确切路径吗