More

    Supprimer le frontend web Yii2 sur Apache et Nginx

    Advertisement

    Pour supprimer le frontend web Yii2 de la structure d’URL de votre application, vous pouvez utiliser plusieurs méthodes fiables afin de rendre l’adresse plus propre et plus professionnelle. Cette approche améliore la confiance des utilisateurs, facilite la gestion et maintient une structure de développement ordonnée.

    Dans le développement moderne, l’apparence d’un URL joue un rôle important. Un URL trop long peut déranger les utilisateurs. De plus, les répertoires internes comme frontend ou backend ne devraient pas apparaître directement. Pour cette raison, une configuration adaptée est nécessaire afin que l’application fonctionne de manière optimale sans exposer sa structure interne.

    Dans cet article, trois méthodes principales sont présentées : configuration Virtual Host Apache, modification de la structure Yii2 et configuration Nginx. Chacune peut être utilisée en environnement local ou en production si elle est ajustée selon les bonnes pratiques.

    Advertisement

    1. Supprimer le frontend web Yii2 avec Virtual Host Apache

    Virtual Host permet d’associer un domaine à un répertoire spécifique afin que les dossiers frontend/web et backend/web ne s’affichent pas dans l’URL. Cette méthode est courante, simple et compatible avec de nombreuses configurations avancées.

    Ouvrez le fichier de configuration Apache, souvent situé dans httpd-vhosts.conf, puis ajoutez :

    Advertisement
    <VirtualHost *:80>
        ServerName frontend.local
        DocumentRoot "C:/xampp/htdocs/yii2-test/frontend/web/"
            
        <Directory "C:/xampp/htdocs/yii2-test/frontend/web/">
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . index.php
            DirectoryIndex index.php
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName backend.local
        DocumentRoot "C:/xampp/htdocs/yii2-test/backend/web/"
            
        <Directory "C:/xampp/htdocs/yii2-test/backend/web">
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . index.php
            DirectoryIndex index.php
        </Directory>
    </VirtualHost>

    Ensuite, ajoutez les noms de domaine locaux dans le fichier hosts du système :

    127.0.0.1 frontend.local
    127.0.0.1 backend.local

    Après configuration, le frontend est accessible via http://frontend.local/ et le backend via http://backend.local/. Vous pouvez consulter la documentation Apache (nofollow) pour des précisions supplémentaires.

    2. Modifier la structure Yii2 pour supprimer le frontend web Yii2

    Dans cette méthode, certains fichiers du frontend sont déplacés vers le répertoire racine du projet. Cette technique fonctionne bien en environnement de test. Toutefois, pour la production, il est conseillé d’utiliser Virtual Host ou Nginx.

    structure de fichiers pour supprimer le frontend web Yii2
    Structure des fichiers déplacés vers la racine pour supprimer le frontend web Yii2

    Copiez les dossiers assets, css ainsi que le fichier index.php depuis frontend/web vers la racine du projet. Modifiez ensuite index.php comme suit :

    <?php
    defined('YII_DEBUG') or define('YII_DEBUG', true);
    defined('YII_ENV') or define('YII_ENV', 'dev');
    
    require(__DIR__ . '/vendor/autoload.php');
    require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
    require(__DIR__ . '/common/config/bootstrap.php');
    require(__DIR__ . '/frontend/config/bootstrap.php');
    
    $config = yii\helpers\ArrayHelper::merge(
        require(__DIR__ . '/common/config/main.php'),
        require(__DIR__ . '/common/config/main-local.php'),
        require(__DIR__ . '/frontend/config/main.php'),
        require(__DIR__ . '/frontend/config/main-local.php')
    );
    
    (new yii\web\Application($config))->run();

    Une fois terminé, l’application est accessible via http://localhost/nom-du-projet/.

    Advertisement

    Latest Articles