La plantilla de aplicación avanzada de Yii2 crea secciones de frontend y backend en directorios separados. De forma predeterminada, estos directorios aparecen en URL, lo que puede resultar indeseable para una presentación limpia y de aspecto profesional. Este artículo tiene como objetivo guiarlo para ocultar estos directorios por completo.
1. Configuración raíz de .htaccess
En el directorio raíz del proyecto (por ejemplo, avanzado/), cree un archivo .htaccess y pegue el siguiente 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. Solicitar componente
Cree un archivo componentes/Request.php en el directorio común y agregue el siguiente 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. Configurar aplicaciones frontend y backend
En frontend/config/main.php y backend/config/main.php, modifique los componentes de solicitud y urlManager de la siguiente manera:
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
]
Paso 4 opcional (si los pasos anteriores fallan)
Cree un archivo .htaccess en el directorio web y agregue el siguiente código:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]
Resultado
Después de aplicar estos cambios, puede acceder a su sitio web en http:/ /localhost/yii2app y http://localhost/yii2app/admin sin que aparezcan rutas de frontend o backend en las URL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3