.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 サイトの他の関連記事を参照してください。