Wie verstecke ich Frontend- und Backend-Pfade in Yii2-Anwendungen?

Linda Hamilton
Freigeben: 2024-11-01 19:28:02
Original
743 Leute haben es durchsucht

How to Hide Frontend and Backend Paths in Yii2 Applications?

Frontend- und Backend-Pfade in Yii2 mit .htaccess und Request Component ausblenden

Problemübersicht

Yii2-Anwendungen zeigen standardmäßig Frontend- und Backend-Pfade in URLs an. Dies kann für ein sauberes und benutzerfreundliches Erlebnis unerwünscht sein. Ziel ist es, die gesamte Site zugänglich zu machen, ohne diese Pfade preiszugeben.

Lösung

Um dies zu erreichen, wird eine Kombination aus .htaccess-Konfigurationen und einer benutzerdefinierten Request-Komponente verwendet .

Schritt 1: .htaccess-Konfiguration

Erstellen Sie eine .htaccess-Datei im Stammverzeichnis (d. h. advanced/.htaccess) mit dem folgenden Code:

Options +FollowSymlinks
RewriteEngine On

# Handle admin URL first
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]

# Handle frontend URL
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
Nach dem Login kopieren

Schritt 2: Benutzerdefinierte Anforderungskomponente

Erstellen Sie eine Datei „components/Request.php“ im gemeinsamen 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>
Nach dem Login kopieren

Schritt 3: Komponentenkonfiguration

Fügen Sie in den Dateien frontend/config/main.php und backend/config/main.php Folgendes unter dem Komponentenarray hinzu:

<code class="php">// frontend
'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],

// backend
'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>
Nach dem Login kopieren

Optionaler Schritt 4: .htaccess-Datei im Webverzeichnis

Wenn die URLs noch die Frontend-/Backend-Pfade enthalten, erstellen Sie eine .htaccess-Datei im Webverzeichnis mit den folgenden Zeilen :

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

Fazit

Mit diesen Änderungen funktioniert die Yii2-Anwendung nun ohne Anzeige der Frontend- und Backend-Pfade in den URLs, was eine benutzerfreundlichere Lösung bietet und sicheres Front-End-Erlebnis.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage