ホームページ >バックエンド開発 >PHPチュートリアル >Yii2 ウェブサイトの URL からフロントエンドとバックエンドのディレクトリを非表示にする方法は?

Yii2 ウェブサイトの URL からフロントエンドとバックエンドのディレクトリを非表示にする方法は?

DDD
DDDオリジナル
2024-10-30 09:44:27506ブラウズ

How to Hide the Frontend and Backend Directories from URLs in a Yii2 Website?

.htaccess を使用して Yii2 Web サイトのフロントエンド/web ディレクトリとバックエンド/web ディレクトリを非表示にする

問題:

Yii2 Advanced テンプレートでは、Web サイトの URL にフロントエンドとバックエンドのディレクトリが表示されます。これは、よりプロフェッショナルな外観やカスタマイズされた外観にとっては望ましくない可能性があります。

解決策:

これらのディレクトリを非表示にするには、Web サイトのルート ディレクトリにある .htaccess ファイルを次のように変更します。

Options +FollowSymlinks
RewriteEngine On

# Handle admin URL separately
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 assets
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]

# Handle frontend
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

追加の構成:

URL を適切に処理するには、共通ディレクトリにコンポーネント/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>

frontend/config/main.php と backend/config/main.php でそれぞれ Request コンポーネントを構成します:

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

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

Web ディレクトリ用の追加の .htaccess 構成:

上記の手順で問題が解決しない場合は、次の内容で Web ディレクトリ (フロントエンドとバックエンドの両方) に .htaccess ファイルを作成または変更します。

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

その後これらの構成を実装すると、Web サイトの URL にフロントエンド/Web ディレクトリまたはバックエンド/Web ディレクトリが表示されなくなり、よりクリーンでプロフェッショナルな外観が提供されます。

以上がYii2 ウェブサイトの URL からフロントエンドとバックエンドのディレクトリを非表示にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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