Heim >Backend-Entwicklung >PHP-Tutorial >Wie verstecke ich Frontend- und Backend-Pfade in Yii2-Anwendungen?

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

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 19:28:02797Durchsuche

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

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>

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>

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]

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!

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