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

DDD
Freigeben: 2024-10-30 09:44:27
Original
437 Leute haben es durchsucht

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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]
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage