Yii2:URL重写后无法在后端和前端显示图像

时间:2019-08-24 13:31:30

标签: php yii2 yii2-advanced-app

我更改了前端/网站和后端/网站网址,并且正在将文件上传到应用程序根目录下的uploads文件夹中。 “ / yii2app / uploads”,但无法显示图片。

使用htaccess更改前端和后端URL。所有链接都工作正常。另外,我正在将文件上传到根文件夹中。从后端应用程序,我将图像上传到根文件夹中,这很好。但是我无法查看图像。

我的根文件夹HTACCESS

Options -Indexes

IndexIgnore */*

#follow symbolic links
Options FollowSymlinks
RewriteEngine on
#without trailing slash
RewriteRule ^admin(/.+)?$ backend/web/$1 [L,PT]
#with trailing slash
RewriteRule ^admin/(.+)?$ backend/web/$1 [L,PT]
RewriteRule ^(.+)?$ frontend/web/$1

前端HTACCESS

RewriteEngine on
RewriteBase /yii2app

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php/controller/action
RewriteRule (?!web\/) index.php/$1

后端HTACCESS

RewriteEngine on
RewriteBase /yii2app/admin

# 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

在config / main.php中,都添加了起始网址和基本网址,

/yii2app - frontend
/yii2app/admin - backend

此外,我在common / config / bootstrap.php中创建了别名'@root'

Yii::setAlias('@root', realpath(dirname(__FILE__).'/../../'));

问题是当我尝试加载img时,它没有显示。我尝试this solution用于在根文件夹中上传图像。 请帮忙。

更新

下面的代码我曾经在gridview(从后端)中查看图像,但是没有用

[
                'label'=>'Event Image',
                'attribute'=>'image_url',
                'format'=>'html',
                'value'=>function($model){
                    return Html::img(Yii::getAlias('@root')."/uploads/events/".$model->id."/".$model->image_url);
                }
            ],

还尝试从后端应用程序

[
                'label'=>'Event Image',
                'attribute'=>'image_url',
                'format'=>'html',
                'value'=>function($model){
                    return Html::img("../../uploads/events/".$model->id."/".$model->image_url, ['width' => '170px']);
                }
            ],

我犯错了吗?

1 个答案:

答案 0 :(得分:0)

您没有为根目录设置别名,但应使用Web目录中的符号链接并查看图像。

webfrontend的{​​{1}}目录内创建符号链接。

对于前端

backend

对于后端

ln -s /home/username/html/yii2app/uploads /home/username/html/yii2app/frontend/web

然后在前端或后端按照如下所示使用它们

ln -s /home/username/html/yii2app/uploads /home/username/html/yii2app/backend/web

Windows10

对于在Widows10 OS上使用localhost的用户,要利用符号链接,可以在命令提示符下使用<img src="/uploads/filename.jpg" /> 实用程序,该实用程序将链接名称作为第一个参数,将源文件夹作为第二个

mklink

注意:mklink /D c:\xampp\htdocs\yii2app\frontend\web\uploads c:\xampp\htdocs\yii2app\uploads 用于创建指向目录的符号链接