.htaccess 및 요청 구성 요소를 사용하여 Yii2에서 프런트엔드 및 백엔드 경로 숨기기
문제 개요
Yii2 애플리케이션은 기본적으로 URL에 프런트엔드 및 백엔드 경로를 표시합니다. 이는 깨끗하고 사용자 친화적인 환경에서는 바람직하지 않을 수 있습니다. 목표는 이러한 경로를 공개하지 않고 전체 사이트에 액세스할 수 있도록 만드는 것입니다.
솔루션
이를 달성하기 위해 .htaccess 구성과 사용자 정의 요청 구성 요소의 조합이 사용됩니다. .
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단계: 웹 디렉터리의 .htaccess 파일
URL에 여전히 프런트엔드/백엔드 경로가 포함되어 있으면 다음 줄을 사용하여 웹 디렉터리에 .htaccess 파일을 만듭니다. :
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
결론
이러한 수정을 통해 Yii2 애플리케이션은 이제 URL에 프런트엔드 및 백엔드 경로를 표시하지 않고 작동하여 보다 사용자 친화적인 안전한 프런트엔드 경험을 제공합니다.
위 내용은 Yii2 애플리케이션에서 프런트엔드 및 백엔드 경로를 숨기는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!