문제:
프런트엔드 또는 백엔드에 액세스할 때 Yii2 애플리케이션에서는 "frontend/web" 및 "backend/web" 경로가 URL에 표시되지만 이는 바람직하지 않을 수 있습니다. 이 문서에서는 이러한 경로를 완전히 숨기는 솔루션을 제공합니다.
해결책:
1단계: 루트 폴더의 .htaccess
다음 내용으로 루트 폴더(advanced/)에 .htaccess 파일을 생성합니다.
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를 common 디렉터리에 추가하고 다음 코드를 추가합니다:
<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단계(선택 사항): 웹 디렉터리의 .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의 프런트엔드 또는 백엔드 경로를 보지 않고.
위 내용은 .htaccess를 사용하여 Yii2에서 프런트엔드 및 백엔드 경로를 숨기는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!