>백엔드 개발 >PHP 튜토리얼 >Yii2 웹사이트의 URL에서 프런트엔드 및 백엔드 디렉터리를 숨기는 방법은 무엇입니까?

Yii2 웹사이트의 URL에서 프런트엔드 및 백엔드 디렉터리를 숨기는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-30 09:44:27460검색

How to Hide the Frontend and Backend Directories from URLs in a Yii2 Website?

.htaccess를 사용하여 Yii2 웹사이트에서 프런트엔드/웹 및 백엔드/웹 디렉토리 숨기기

문제:

Yii2 Advanced 템플릿에서는 웹사이트 URL에서 프런트엔드 및 백엔드 디렉토리를 볼 수 있습니다. 이는 보다 전문적이거나 사용자 정의된 모양을 위해 바람직하지 않을 수 있습니다.

해결책:

이러한 디렉터리를 숨기려면 웹사이트 루트 디렉터리의 .htaccess 파일을 다음과 같이 수정하세요.

Options +FollowSymlinks
RewriteEngine On

# Handle admin URL separately
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 assets
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]

# Handle frontend
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

추가 구성:

올바른 URL 처리를 위해 공통 디렉토리에 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>

frontend/config/main.php 및 backend/config/main.php에서 각각 요청 구성 요소를 구성합니다.

<code class="php">// frontend
'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],

// backend
'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],</code>

웹 디렉터리에 대한 추가 .htaccess 구성:

위 단계로 문제가 해결되지 않으면 웹 디렉터리(프런트엔드와 백엔드 모두)에서 다음 내용으로 .htaccess 파일을 생성하거나 수정하세요.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/ [L]

이후 이러한 구성을 구현하면 웹사이트의 URL이 더 이상 프런트엔드/웹 또는 백엔드/웹 디렉토리를 표시하지 않아 더욱 깔끔하고 전문적인 모습을 제공합니다.

위 내용은 Yii2 웹사이트의 URL에서 프런트엔드 및 백엔드 디렉터리를 숨기는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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