Yii 2: .htaccess for template avanzato s shared host

Sto provando a installare un template avanzato su shared host.

cio vuol dire che

  • domain.tld deve puntare a frontend/web/index.php

  • domain.tld/something deve puntare a backend/web/index.php

Il file .htaccess che sto usando nella web root è questo





<IfModule mod_rewrite.c> 

  RewriteEngine on


  RewriteCond %{REQUEST_URI} !^/something

  RewriteRule ^(.*)$ frontend/web/$1  [L]


  RewriteCond %{REQUEST_URI} ^/something

  RewriteRule ^(something/)(.*)$ backend/web/$2   [L]

</IfModule>


# Deny accessing below extensions

<Files ~ "(.json|.lock|.git)">

Order allow,deny

Deny from all

</Files>


# Deny accessing dot files

RewriteRule (^\.|/\.) - [F]



Attualmente l’accesso al frontend funziona benissimo, ma quando accedo a /smothing mi da un 404, quello che non sapevo è se era gestito dalla index del frontend o dalla index del backend.

allora ho provato a modificare l’index.php del backend facendogli fare solo una echo e ho verificato che la regola dell’.htaccess è corretta, perchè viene servito il backend/web/index.php.

Quindi il problema deve stare nella gestione degli url dentro al backend.

questo è il backedn/config/main.php




<?php

$params = array_merge(

    require(__DIR__ . '/../../common/config/params.php'),

    require(__DIR__ . '/../../common/config/params-local-'. YII_ENV .'.php'),

    require(__DIR__ . '/params.php'),

    require(__DIR__ . '/params-local-'. YII_ENV .'.php')

);




use \yii\web\Request;

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


return [

    'id' => 'app-backend',

    'basePath' => dirname(__DIR__),

    'controllerNamespace' => 'backend\controllers',

    'bootstrap' => ['log'],

    'modules' => [],

    'components' => [

        'request' => [

            'baseUrl' => $baseUrl,

        ],

        'user' => [

            'identityClass' => 'common\models\User',

            'enableAutoLogin' => true,

        ],

        'log' => [

            'traceLevel' => YII_DEBUG ? 3 : 0,

            'targets' => [

                [

                    'class' => 'yii\log\FileTarget',

                    'levels' => ['error', 'warning'],

                ],

            ],

        ],

        'urlManager' => [

            'baseUrl' => $baseUrl,

            'enablePrettyUrl' => true,

            'showScriptName' => false,

            'rules' => []

        ],

        'errorHandler' => [

            'errorAction' => 'site/error',

        ],

    ],

    'params' => $params,

];




Sei riuscito a poter utilizzare yii2 su altervista ?

Io per nginx e apache2 uso le conf suggerite qui e funzionano benissimo.