Yii2 的高階應用程式範本在不同的目錄中建立前端和後端部分。預設情況下,這些目錄出現在 URL 中,這對於乾淨且具有專業外觀的簡報來說可能是不可取的。本文旨在引導您完全隱藏這些目錄。
1.根.htaccess配置
在專案的根目錄(例如advanced/)中,建立一個.htaccess檔案並貼上以下程式碼:
Options +FollowSymlinks RewriteEngine On # Redirect admin requests to backend/web RewriteCond %{REQUEST_URI} ^/(admin) RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteRule ^.*$ backend/web/index.php [L] # Redirect all other requests to frontend/web 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
2.請求元件
在common目錄下建立一個components/Request.php文件,加入以下程式碼:
<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>
3.設定前端和後端應用
在frontend/config/main.php和backend/config/main.php中,修改request和urlManager元件如下:
frontend /config/main.php
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false ]</code>
backend/config/main.php
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false ]</code>backend/config/main.php
>
可選步驟4(如果前面的步驟失敗)RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
在web目錄下建立.htaccess文件,加入以下程式碼:
結果應用後這些變更後,您可以透過http://localhost/yii2app 和http://localhost/yii2app/admin 造訪您的網站,而URL 中不會出現任何前端或後端路徑。以上是如何在 Yii2 高階應用中完全隱藏前後端路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!