2017-09-29 11 views
0

私はYii2の高度なテンプレートを使ってウェブサイトを作っており、 "root"フォルダにあるアップロードフォルダ内のファイルにアクセスしたいと思います。 私が持っている:Yii2 "root"フォルダ内のフォルダにアクセスする方法は?

backend/web/ 
frontend/web/ 
uploads/ 

私は、だから私の.htaccessファイルが

Options +FollowSymlinks 
RewriteEngine On 

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

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


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

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

マイ共通/コンポーネント/ Request.phpファイルは

<?php 

    namespace common\components; 

    class Request extends \yii\web\Request 
    { 
    public $web; 
    public $adminUrl; 

    public function getBaseUrl(){ 
     return str_replace($this->web, "", parent::getBaseUrl()) .$this->adminUrl; 
    } 

    public function resolvePathInfo(){ 
     if($this->getUrl() === $this->adminUrl){ 
      return ""; 
     }else{ 
      return parent::resolvePathInfo(); 
     } 
    } 
    } 
?> 
である Yii2. Access to higher level folder

の第一の答えを踏襲しています

私の前に/ config/main.php

.. 
'components' => [ 
    'request' => [ 
     'cookieValidationKey' => 'xxxxxxxxxxxxxxxxx', 
     'csrfParam' => '_csrf-frontend', 
     'class' => 'common\components\Request', 
     'web'=> '/frontend/web' 
    ], 

今、私は

Html::img('../..'/uploads/my-image.png') 

と私のアップロードフォルダ内の画像を見ることができる前に、私は

(/フロントエンド/ウェブ/なし)はlocalhost/myappにして自分のサイトにアクセスすることができます。しかし、それはありません../../uploads nore with uploads/

アップロードフォルダにアクセスするにはどうすればよいですか?バーチャルホストの構成で

答えて

1

.htaccessファイルの変更。

アップロードに.htaccessファイルの下ディレクトリのRewriteCond

RewriteCond %{REQUEST_URI} !/(uploads)/ 

のようなショーを追加します。

Options +FollowSymlinks 
RewriteEngine On 

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

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


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

RewriteCond %{REQUEST_URI} !/(frontend|backend)/web/(assets|css|js|img|font)/ 
RewriteCond %{REQUEST_URI} !/(uploads)/ 
RewriteCond %{REQUEST_URI} !index.php 
RewriteCond %{REQUEST_FILENAME} !-f [OR] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ frontend/web/index.php 
0

エイリアスを作成する(パブリックフォルダの実際のパスを置き換える)と、それへのアクセスを許可する、といった:

Alias /uploads /var/www/html/public 

<Directory /var/www/html/public> 
     Order allow,deny 
     Allow from all 
     Require all granted 
</Directory> 

そして、あなたは/アップロードフォルダへの要求を行うことができます。

+0

ありがとうございました。しかし、私のサーバーはPleskによって管理されており、私はSSHアクセスを持っていないので、vhostの設定を変更することはできません。 – Ludo

関連する問題