.htaccess とリクエストコンポーネントを使用した Yii2 のフロントエンドとバックエンドのパスの非表示
問題の概要
Yii2 アプリケーションはデフォルトで URL にフロントエンドとバックエンドのパスを表示します。これは、クリーンでユーザーフレンドリーなエクスペリエンスにとっては望ましくない可能性があります。目標は、これらのパスを公開せずにサイト全体にアクセスできるようにすることです。
解決策
これを実現するには、.htaccess 構成とカスタム Request コンポーネントの組み合わせが使用されます。 .
ステップ 1: .htaccess の構成
次のコードを使用して、ルート ディレクトリ (つまり、advanced/.htaccess) に .htaccess ファイルを作成します。
Options +FollowSymlinks RewriteEngine On # Handle admin URL first 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 URL 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: カスタム リクエスト コンポーネント
共通ディレクトリにコンポーネント/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">// frontend 'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ], // backend 'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, ],</code>
オプションのステップ 4: Web ディレクトリの .htaccess ファイル
URL にまだフロントエンド/バックエンドのパスが含まれている場合は、次の行を含む .htaccess ファイルを Web ディレクトリに作成します。 :
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
結論
これらの変更により、Yii2 アプリケーションは URL にフロントエンドとバックエンドのパスを表示せずに動作するようになり、よりユーザーフレンドリーなアプリケーションが提供されます。安全なフロントエンドエクスペリエンスを実現します。
以上がYii2 アプリケーションでフロントエンドとバックエンドのパスを非表示にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。