"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo ocultar completamente las rutas de frontend y backend en aplicaciones avanzadas de Yii2?

¿Cómo ocultar completamente las rutas de frontend y backend en aplicaciones avanzadas de Yii2?

Publicado el 2024-11-18
Navegar:842

How to Completely Hide Frontend and Backend Paths in Yii2 Advanced Applications?

Ocultar completamente las rutas de frontend y backend de Yii2

Comprender el problema

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.

Guía paso a paso

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.

Último tutorial Más>

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