Frontend-Web von Yii2 entfernen unter Apache und Nginx

Advertisement

Um das Frontend-Web von Yii2 entfernen zu können, stehen mehrere sichere Methoden zur Verfügung, damit die URLs klarer und professioneller wirken. Dieser Ansatz stärkt das Vertrauen der Nutzer, erleichtert die Verwaltung und sorgt für eine strukturiert aufgebaute Anwendung.

Advertisement

In modernen Webanwendungen spielt die Darstellung der URL eine große Rolle. Lange oder interne Verzeichnisse können Nutzer verwirren. Zusätzlich sollten interne Strukturen wie frontend oder backend nicht direkt sichtbar sein. Daher ist eine saubere Konfiguration sinnvoll, damit die Anwendung optimal funktioniert, ohne interne Strukturinformationen preiszugeben.

In diesem Artikel werden drei Hauptmethoden vorgestellt, mit denen Sie das Frontend-Web von Yii2 entfernen können. Dazu gehören die Verwendung eines Apache Virtual Hosts, das Anpassen der Yii2-Struktur sowie die Konfiguration von Nginx.

Advertisement

1. Frontend-Web von Yii2 entfernen mit Apache Virtual Host

Ein Virtual Host ermöglicht es, eine Domain direkt auf ein bestimmtes Verzeichnis abzubilden, sodass frontend/web und backend/web nicht in der URL erscheinen. Diese Methode wird häufig eingesetzt und lässt sich flexibel erweitern.

Öffnen Sie die Apache-Konfiguration, meist zu finden in httpd-vhosts.conf, und fügen Sie folgende Einträge hinzu:

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>

Ergänzen Sie anschließend die lokale Hostdatei Ihres Systems:

127.0.0.1 frontend.local
127.0.0.1 backend.local

Wenn alles korrekt eingerichtet ist, erreichen Sie das Frontend unter http://frontend.local/ und das Backend unter http://backend.local/.

2. Yii2-Struktur anpassen, um Frontend-Web von Yii2 entfernen zu können

Bei dieser Methode verschieben Sie einige Dateien des Frontends in das Hauptverzeichnis der Installation. Diese Variante eignet sich besonders für lokale Entwicklungsumgebungen. Für den produktiven Einsatz sind die Konfigurationen über Apache oder Nginx jedoch stabiler.

Dateistruktur zum Entfernen des Frontend-Web von Yii2
Dateien, die verschoben werden, um das Frontend-Web von Yii2 entfernen zu können

Kopieren Sie die Verzeichnisse assets, css sowie die Datei index.php aus frontend/web in das Root-Verzeichnis. Anschließend ersetzen Sie die Datei index.php durch folgenden Inhalt:

<?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();

Nach der Anpassung erreichen Sie die Anwendung über http://localhost/projektname/.

3. Frontend-Web von Yii2 entfernen mit Nginx

Nginx ist ressourcenschonend und wird häufig in produktiven Umgebungen verwendet. Um das Frontend-Web von Yii2 entfernen zu können, definieren Sie einfach das Webverzeichnis als Root des Servers.

Konfiguration für das Frontend

server {
    listen 80;
    server_name frontend.local;
    root /var/www/yii2-test/frontend/web;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* /\.(htaccess|svn|git) {
        deny all;
    }
}

Konfiguration für das Backend

server {
    listen 80;
    server_name backend.local;
    root /var/www/yii2-test/backend/web;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* /\.(htaccess|svn|git) {
        deny all;
    }
}

Fügen Sie die lokalen Domains auch in die Hostdatei des Betriebssystems ein:

127.0.0.1 frontend.local
127.0.0.1 backend.local

Danach können Sie das Frontend unter http://frontend.local/ und das Backend unter http://backend.local/ aufrufen. Diese Methode gilt als sehr stabil für produktive Systeme und lässt sich problemlos mit HTTPS, Cache-Optimierung und Sicherheitsmechanismen kombinieren.

Neueste Artikel