ホームページ  >  記事  >  バックエンド開発  >  Yii2 アドバンスト アプリケーションでフロントエンドとバックエンドのパスを完全に非表示にする方法は?

Yii2 アドバンスト アプリケーションでフロントエンドとバックエンドのパスを完全に非表示にする方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 17:15:03268ブラウズ

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.リクエスト コンポーネント

共通ディレクトリにコンポーネント/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>

オプションのステップ 4 (前のステップの場合)失敗)

Web ディレクトリに .htaccess ファイルを作成し、次のコードを追加します:

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

結果

適用後これらの変更により、URL にフロントエンドまたはバックエンドのパスが表示されなくても、http://localhost/yii2app および http://localhost/yii2app/admin で Web サイトにアクセスできるようになります。

以上がYii2 アドバンスト アプリケーションでフロントエンドとバックエンドのパスを完全に非表示にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。