首頁  >  文章  >  後端開發  >  如何使用 .htaccess 隱藏 Yii2 中的前端和後端路徑?

如何使用 .htaccess 隱藏 Yii2 中的前端和後端路徑?

Susan Sarandon
Susan Sarandon原創
2024-10-30 17:42:03278瀏覽

How to Hide Frontend and Backend Paths in Yii2 with .htaccess?

在Yii2 中使用.htaccess 隱藏前端和後端路徑

問題:

訪問前端或後端時Yii2 應用程式中,路徑「frontend/web」和「backend/web」在URL 中可見,這可能是不受歡迎的。本文提供了完全隱藏這些路徑的解決方案。

解決方案:

第1 步:根資料夾中的.htaccess

在根資料夾(advanced /)中建立一個.htaccess 文件,內容如下:

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

第2 步:components/Request.php

建立元件/Request.php 在common目錄中加入以下程式碼:

<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>

第三步:前端和後端主要設定

在frontend/config/main.php 中在backend/config /main.php 與backend/config/main.php 的元件陣列下加入以下內容:

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>

在backend/config/main.php 中,另外設定adminUrl:

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],</code>

第4 步(可選):Web 目錄中的.htaccess

使用以下內容在frontend/web 和backend/web 目錄中建立.htaccess 檔案:

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

結果:

進行這些更改後,您應該能夠訪問http://localhost/yii2app/ 的前端和http://localhost/yii2app/admin 的後端/ 看不到URL 中的前端或後端路徑。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn