如何在 Yii2 應用程式中隱藏前端和後端路徑?

Linda Hamilton
發布: 2024-11-01 19:28:02
原創
744 人瀏覽過

How to Hide Frontend and Backend Paths in Yii2 Applications?

使用.htaccess 和請求組件隱藏Yii2 中的前端和後端路徑

問題概述

Yii2 應用程式預設在URL 中顯示前端和後端路徑。對於乾淨且用戶友好的體驗來說,這可能是不可取的。目標是在不洩露這些路徑的情況下使整個網站可存取。

解決方案

為了實現此目的,使用.htaccess 配置和自訂請求組件的組合.

第1步: .htaccess配置

在根目錄(即advanced/.htaccess)中建立一個.htaccess文件,程式碼如下:

Options +FollowSymlinks
RewriteEngine On

# Handle admin URL first
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 URL
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
登入後複製

第二步:自訂請求元件

在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檔案中的components陣列下加入以下內容:

<code class="php">// frontend
'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],

// backend
'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>
登入後複製

可選步驟4:Web 目錄中的.htaccess 檔案

如果URL 仍包含前端/後端路徑,請使用以下行在Web 目錄中建立.htaccess 檔案:

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

結論

透過這些修改,Yii2 應用程式現在將在URL 中不顯示前端和後端路徑的情況下運行,從而提供更用戶友好的介面和安全的前端體驗。

以上是如何在 Yii2 應用程式中隱藏前端和後端路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板