Yii2. Accesso alla cartella di livello superiore

Domanda semplice. Io uso il modello avanzato di Yii2 . In apache ho DocumentRoot "{$path}/www/yii-application1/frontend/web" . Come posso accedere a /www/yii-application1/uploads per mostrare l’immagine all’utente? Il seguente code non funziona:

  

Funziona con DocumentRoot "{$path}/www/yii-application1/" . Ma in questo caso una pagina di index del sito web appare come domain.com/frontend/web . Ma ho bisogno solo di domain.com .

Passo 1

Prima crea il file .htaccess qui yii-application1/.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 ^image/(.*)$ frontend/web/image/$1 [L] RewriteCond %{REQUEST_URI} !/(frontend|backend)/web/(assets|css|js|image|font)/ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php 

Passo 2

Ora crea un file components/Request.php nella directory common e scrivi sotto il codice in questo file.

File Request.php

 web, "", parent::getBaseUrl()) . $this->adminUrl; } public function resolvePathInfo(){ if($this->getUrl() === $this->adminUrl){ return ""; }else{ return parent::resolvePathInfo(); } } } ?> 

Passaggio: 3

Ora installazione del componente. Scrivi sotto il codice nei file frontend/config/main.php e backend/config/main.php rispettivamente.

 //Frontend 'components' => [ 'user' => [ 'identityClass' => 'common\models\User', 'enableAutoLogin' => true, 'identityCookie' => [ 'name' => '_frontendUser', // unique for frontend ] ], 'session' => [ 'name' => 'PHPFRONTSESSID', 'savePath' => sys_get_temp_dir(), ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/', ], ], 'request'=>[ 'cookieValidationKey' => '[gfhjghsdjks44fdf4fgf4fgfg5645ggxcvvc]', 'csrfParam' => '_frontendCSRF', 'class' => 'common\components\Request', 'web'=> '/frontend/web' ], ] //Backend 'components' => [ 'user' => [ 'identityClass' => 'common\models\User', 'enableAutoLogin' => false, 'identityCookie' => [ 'name' => '_backendUser', // unique for backend ] ], 'session' => [ 'name' => 'PHPBACKSESSID', 'savePath' => sys_get_temp_dir(), ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], 'request'=>[ 'cookieValidationKey' => '[ruiqwybnddiogj786789hzcassdas9dasdjufi]', 'csrfParam' => '_backendCSRF', 'class' => 'common\components\Request', 'web'=> '/backend/web', 'adminUrl' => '/backend' ], ] 

Il tuo problema domain.com/frontend/web risolto per seguire i steps precedenti. e puoi accedere alla pagina index per domain.com/frontend/web utilizzando domain.com .

Ora puoi accedere alla tua immagine usando

  

Inoltre è ansible accedere a domain.com/frontend/web/image utilizzando il codice sottostante

  'retina']); ?> 

inoltre ottieni il percorso webroot usando questo Yii::getAlias('@webroot')

Puoi anche usare alise all’interno di config array sul file web.php della cartella config come

  'aliases' => [ '@uploads' => '@app/web/upload', ], 

e usalo in qualsiasi posto tu voglia

   'retina']); ?>