>  기사  >  백엔드 개발  >  Yii2 고급 애플리케이션에서 프런트엔드 및 백엔드 경로를 완전히 숨기는 방법은 무엇입니까?

Yii2 고급 애플리케이션에서 프런트엔드 및 백엔드 경로를 완전히 숨기는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 17:15:03268검색

How to Completely Hide Frontend and Backend Paths in Yii2 Advanced Applications?

Yii2 프런트엔드 및 백엔드 경로 완전히 숨기기

문제 이해

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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