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.
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.
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:
<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.

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.

