O modelo de aplicativo avançado do Yii2 cria seções de front-end e back-end em diretórios separados. Por padrão, esses diretórios aparecem em URLs, o que pode ser indesejável para uma apresentação limpa e com aparência profissional. Este artigo tem como objetivo orientá-lo na ocultação completa desses diretórios.
1. Configuração raiz .htaccess
No diretório raiz do projeto (por exemplo, advanced/), crie um arquivo .htaccess e cole o seguinte código:
Options FollowSymlinks RewriteEngine On # Redirect admin requests to backend/web RewriteCond %{REQUEST_URI} ^/(admin) RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteRule ^.*$ backend/web/index.php [L] # Redirect all other requests to frontend/web RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php
2. Componente de solicitação
Crie um arquivo components/Request.php no diretório comum e adicione o seguinte código:
namespace common\components;
class Request extends \yii\web\Request {
public $web;
public $adminUrl;
public function getBaseUrl(){
return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl;
}
public function resolvePathInfo(){
if($this->getUrl() === $this->adminUrl){
return "";
}else{
return parent::resolvePathInfo();
}
}
}
3. Configurando aplicativos frontend e backend
Em frontend/config/main.php e backend/config/main.php, modifique os componentes request e urlManager da seguinte forma:
frontend /config/main.php
'request' => [
'class' => 'common\components\Request',
'web' => '/frontend/web'
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false
]
backend/config/main.php
'request' => [
'class' => 'common\components\Request',
'web' => '/backend/web',
'adminUrl' => '/admin'
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false
]
Etapa opcional 4 (se as etapas anteriores falharem)
Crie um arquivo .htaccess no diretório da web e adicione o seguinte código:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
Result
Depois de aplicar essas alterações, você pode acessar seu site em http:/ /localhost/yii2app e http://localhost/yii2app/admin sem nenhum caminho de front-end ou back-end aparecendo nas URLs.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3