Problem:
Beim Zugriff auf das Frontend oder Backend eines In der Yii2-Anwendung sind die Pfade „frontend/web“ und „backend/web“ in URLs sichtbar, was unerwünscht sein kann. Dieser Artikel bietet eine Lösung, um diese Pfade vollständig auszublenden.
Lösung:
Schritt 1: .htaccess im Stammordner
Erstellen Sie eine .htaccess-Datei im Stammordner (advanced/) mit folgendem Inhalt:
Options +FollowSymlinks RewriteEngine On # Admin 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] # Frontend 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: Components/Request.php
Komponenten erstellen /Request.php im allgemeinen 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: Frontend- und Backend-Hauptkonfiguration
In frontend/config/main. php und backend/config/main.php, fügen Sie Folgendes unter dem Components-Array hinzu:
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ],</code>
In backend/config/main.php legen Sie zusätzlich die adminUrl fest:
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ],</code>
Schritt 4 (optional): .htaccess in Webverzeichnissen
Erstellen Sie eine .htaccess-Datei sowohl im Frontend/Web- als auch im Backend/Web-Verzeichnis mit Folgendem:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
Ergebnis:
Nach diesen Änderungen sollten Sie auf Ihr Frontend unter http://localhost/yii2app/ und Ihr Backend unter http://localhost/yii2app/admin zugreifen können / ohne die Frontend- oder Backend-Pfade in den URLs zu sehen.
Das obige ist der detaillierte Inhalt vonWie verstecke ich Frontend- und Backend-Pfade in Yii2 mit .htaccess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!