Para eliminar frontend web Yii2 de la estructura de URL de la aplicación, puede utilizar varios métodos seguros para obtener direcciones más limpias y profesionales. Este enfoque mejora la confianza del usuario, facilita la administración y mantiene una estructura ordenada.
En el desarrollo moderno, la apariencia de la URL es importante. Una URL demasiado larga puede confundir al usuario. Además, los directorios internos como frontend o backend no deberían mostrarse directamente. Por esta razón, es necesario aplicar una configuración adecuada para que la aplicación funcione bien sin exponer la estructura interna.
En este artículo encontrará tres métodos principales que puede utilizar, que son la configuración de Virtual Host en Apache, la modificación de la estructura de Yii2 y la configuración en Nginx. Todos los métodos son seguros tanto en entornos locales como de producción si se aplican correctamente.
1. Eliminar frontend web Yii2 usando Virtual Host en Apache
El Virtual Host permite asignar dominios a directorios específicos, evitando que aparezcan rutas como frontend/web o backend/web en la URL. Este método es habitual, sencillo y compatible con configuraciones avanzadas.
Abra el archivo de configuración de Apache, normalmente ubicado en httpd-vhosts.conf, y añada lo siguiente:
<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>Después de guardar los cambios, agregue los dominios al archivo hosts del sistema:
127.0.0.1 frontend.local 127.0.0.1 backend.local
Si todo está configurado correctamente, podrá acceder al frontend en http://frontend.local/ y al backend en http://backend.local/. Puede consultar la documentación oficial de Apache (nofollow) para configuraciones adicionales.
2. Modificar la estructura de Yii2 para eliminar frontend web Yii2
En este método, algunos archivos del frontend se mueven al directorio raíz. Es práctico para entornos locales o de pruebas. No obstante, para producción se recomienda utilizar Virtual Host o Nginx por estabilidad y seguridad.

Copie los directorios assets, css y el archivo index.php desde frontend/web al directorio raíz del proyecto. Luego modifique el archivo index.php con el siguiente código:
<?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();Cuando todo esté listo, podrá acceder al proyecto mediante http://localhost/nombre-del-proyecto/.
3. Eliminar frontend web Yii2 usando Nginx
Nginx ofrece alto rendimiento y es habitual en servidores de producción. Para eliminar frontend web Yii2 en Nginx, solo necesita apuntar el root al directorio correcto.
Configuración del 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;
}
}Configuración del 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;
}
}Añada los dominios en el archivo hosts de su sistema:
127.0.0.1 frontend.local 127.0.0.1 backend.local
Una vez aplicada la configuración, podrá acceder al frontend mediante http://frontend.local/ y al backend mediante http://backend.local/. Este método es estable y adecuado para producción, además permite integrarse con HTTPS, caché y configuraciones de seguridad avanzadas.


