ホームページ  >  記事  >  バックエンド開発  >  Yii2 で .htaccess を使用してフロントエンドとバックエンドのパスを非表示にする方法は?

Yii2 で .htaccess を使用してフロントエンドとバックエンドのパスを非表示にする方法は?

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

次の内容を含む .htaccess ファイルをルート フォルダー (advanced/) に作成します:

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 に移動し、次のコードを追加します。

<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 で、コンポーネント配列の下に次の行を追加します:

<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 内のフロントエンドまたはバックエンドのパスは表示されません。

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

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