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

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

Linda Hamilton
Linda Hamilton원래의
2024-11-01 19:28:02680검색

How to Hide Frontend and Backend Paths in Yii2 Applications?

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

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