>  기사  >  백엔드 개발  >  .htaccess를 사용하여 Yii2에서 프런트엔드 및 백엔드 경로를 숨기는 방법은 무엇입니까?

.htaccess를 사용하여 Yii2에서 프런트엔드 및 백엔드 경로를 숨기는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 17:42:03275검색

How to Hide Frontend and Backend Paths in Yii2 with .htaccess?

Yii2에서 .htaccess로 프런트엔드 및 백엔드 경로 숨기기

문제:

프런트엔드 또는 백엔드에 액세스할 때 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.