Yii2의 고급 애플리케이션 템플릿은 별도의 디렉토리에 프런트엔드 및 백엔드 섹션을 생성합니다. 기본적으로 이러한 디렉토리는 URL에 표시되므로 깔끔하고 전문적인 프레젠테이션에는 바람직하지 않을 수 있습니다. 이 글의 목표는 이러한 디렉토리를 완전히 숨기는 방법을 안내하는 것입니다.
1. 루트 .htaccess 구성
프로젝트의 루트 디렉터리(예: Advanced/)에 .htaccess 파일을 생성하고 다음 코드를 붙여넣습니다.
Options +FollowSymlinks RewriteEngine On # Redirect admin requests to backend/web RewriteCond %{REQUEST_URI} ^/(admin) RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteRule ^.*$ backend/web/index.php [L] # Redirect all other requests to frontend/web 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 파일을 생성하고 다음 코드를 추가하세요:
<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에서 다음과 같이 요청 및 urlManager 구성 요소를 수정합니다.
frontend /config/main.php
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/frontend/web' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false ]</code>
backend/config/main.php
<code class="php">'request' => [ 'class' => 'common\components\Request', 'web' => '/backend/web', 'adminUrl' => '/admin' ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false ]</code>
선택적 단계 4(이전 단계인 경우) 실패)
웹 디렉토리에 .htaccess 파일을 생성하고 다음 코드를 추가합니다.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/ [L]
결과
신청 후 이러한 변경 사항을 적용하면 URL에 프런트엔드 또는 백엔드 경로가 표시되지 않고 http://localhost/yii2app 및 http://localhost/yii2app/admin에서 웹사이트에 액세스할 수 있습니다.
위 내용은 Yii2 고급 애플리케이션에서 프런트엔드 및 백엔드 경로를 완전히 숨기는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!