Heim >Backend-Entwicklung >PHP-Tutorial >Wie verstecke ich die Frontend- und Backend-Verzeichnisse vor URLs auf einer Yii2-Website?

Wie verstecke ich die Frontend- und Backend-Verzeichnisse vor URLs auf einer Yii2-Website?

DDD
DDDOriginal
2024-10-30 09:44:27472Durchsuche

How to Hide the Frontend and Backend Directories from URLs in a Yii2 Website?

Verstecken von Frontend-/Web- und Backend-/Web-Verzeichnissen auf Yii2-Websites mit .htaccess

Problem:

In der Yii2 Advanced-Vorlage sind die Frontend- und Backend-Verzeichnisse in den URLs der Website zu sehen. Dies kann für ein professionelleres oder individuelleres Erscheinungsbild unerwünscht sein.

Lösung:

Um diese Verzeichnisse auszublenden, ändern Sie die .htaccess-Datei im Stammverzeichnis der Website wie folgt:

Options +FollowSymlinks
RewriteEngine On

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

# Handle frontend
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

Zusätzliche Konfiguration:

Für eine ordnungsgemäße URL-Verarbeitung 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>

Konfigurieren Sie die Anforderungskomponente in frontend/config/main.php bzw. backend/config/main.php:

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

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

Zusätzliche .htaccess-Konfiguration für Webverzeichnis:

Wenn die oben genannten Schritte das Problem nicht beheben, erstellen oder ändern Sie die .htaccess-Datei im Webverzeichnis (sowohl Frontend als auch Backend) mit folgendem Inhalt:

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

Nachher Durch die Implementierung dieser Konfigurationen werden in den URLs der Website nicht mehr die Verzeichnisse „Frontend/Web“ oder „Backend/Web“ angezeigt, was für ein saubereres und professionelleres Erscheinungsbild sorgt.

Das obige ist der detaillierte Inhalt vonWie verstecke ich die Frontend- und Backend-Verzeichnisse vor URLs auf einer Yii2-Website?. 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