Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verstecke ich Frontend- und Backend-Pfade in Yii2 mit .htaccess?

Wie verstecke ich Frontend- und Backend-Pfade in Yii2 mit .htaccess?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 17:42:03331Durchsuche

How to Hide Frontend and Backend Paths in Yii2 with .htaccess?

Verstecken von Frontend- und Backend-Pfaden mit .htaccess in Yii2

Problem:

Beim Zugriff auf das Frontend oder Backend eines In der Yii2-Anwendung sind die Pfade „frontend/web“ und „backend/web“ in URLs sichtbar, was unerwünscht sein kann. Dieser Artikel bietet eine Lösung, um diese Pfade vollständig auszublenden.

Lösung:

Schritt 1: .htaccess im Stammordner

Erstellen Sie eine .htaccess-Datei im Stammordner (advanced/) mit folgendem Inhalt:

Options +FollowSymlinks
RewriteEngine On

# Admin
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^admin/assets/(.*)$ backend/web/assets/ [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/ [L]

RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^.*$ backend/web/index.php [L]

# Frontend
RewriteCond %{REQUEST_URI} ^/(assets|css)
RewriteRule ^assets/(.*)$ frontend/web/assets/ [L]
RewriteRule ^css/(.*)$ frontend/web/css/ [L]
RewriteRule ^js/(.*)$ frontend/web/js/ [L]
RewriteRule ^images/(.*)$ frontend/web/images/ [L]

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

Schritt 2: Components/Request.php

Komponenten erstellen /Request.php im allgemeinen Verzeichnis und fügen Sie den folgenden Code hinzu:

<code class="php">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();
        }
    }
}</code>

Schritt 3: Frontend- und Backend-Hauptkonfiguration

In frontend/config/main. php und backend/config/main.php, fügen Sie Folgendes unter dem Components-Array hinzu:

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>

In backend/config/main.php legen Sie zusätzlich die adminUrl fest:

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>

Schritt 4 (optional): .htaccess in Webverzeichnissen

Erstellen Sie eine .htaccess-Datei sowohl im Frontend/Web- als auch im Backend/Web-Verzeichnis mit Folgendem:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/ [L]

Ergebnis:

Nach diesen Änderungen sollten Sie auf Ihr Frontend unter http://localhost/yii2app/ und Ihr Backend unter http://localhost/yii2app/admin zugreifen können / ohne die Frontend- oder Backend-Pfade in den URLs zu sehen.

Das obige ist der detaillierte Inhalt vonWie verstecke ich Frontend- und Backend-Pfade in Yii2 mit .htaccess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn