Heim >Backend-Entwicklung >PHP-Tutorial >Wie verstecke ich die Frontend- und Backend-Verzeichnisse vor URLs auf einer 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!