Para remover o frontend web do Yii2 da estrutura de URL da aplicação, você pode utilizar métodos seguros que deixam os endereços mais limpos e profissionais. Essa abordagem melhora a experiência do usuário, facilita a manutenção e mantém a organização interna do projeto.
No desenvolvimento moderno, a aparência da URL tem grande importância. Um endereço muito longo pode causar confusão. Além disso, diretórios internos como frontend ou backend não devem ser expostos diretamente. Por isso, é necessário um ajuste adequado para manter o funcionamento ideal sem mostrar a estrutura interna.
Neste artigo existem três métodos principais: configuração de Virtual Host no Apache, modificação da estrutura do Yii2 e configuração no Nginx. Todos são seguros tanto em ambiente local quanto em produção, desde que sejam aplicados corretamente.
1. Remover o Frontend Web do Yii2 Usando Virtual Host no Apache
O Virtual Host permite mapear um domínio para um diretório específico, evitando que frontend/web e backend/web apareçam na URL. É um método simples e muito utilizado por desenvolvedores.
Abra o arquivo de configuração do Apache, normalmente encontrado em httpd-vhosts.conf, e adicione:
<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>Após isso, edite o arquivo hosts do sistema e adicione:
127.0.0.1 frontend.local 127.0.0.1 backend.local
Com a configuração correta, o frontend estará disponível em http://frontend.local/ e o backend em http://backend.local/. Consulte a documentação oficial do Apache (nofollow) para outras possibilidades.
2. Modificar a Estrutura do Yii2 para Remover o Frontend Web do Yii2
Neste método, alguns arquivos do frontend são movidos para o diretório raiz. É útil principalmente para ambientes de teste, mas para produção recomenda-se o uso de Virtual Host ou Nginx.

Copie os diretórios assets, css e o arquivo index.php de frontend/web para o diretório raiz do Yii2. Em seguida, altere o arquivo index.php conforme abaixo:
<?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();Depois disso, o projeto pode ser acessado em http://localhost/nome-do-projeto/.

