首頁 >後端開發 >php教程 >如何在 Yii2 高階應用中完全隱藏前後端路徑?

如何在 Yii2 高階應用中完全隱藏前後端路徑?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 17:15:03302瀏覽

How to Completely Hide Frontend and Backend Paths in Yii2 Advanced Applications?

完全隱藏Yii2 前端和後端路徑

理解問題

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中文網其他相關文章!

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