Home > Backend Development > PHP Tutorial > How to Completely Hide Frontend and Backend Paths in Yii2 Advanced Applications?

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

Mary-Kate Olsen
Release: 2024-11-03 17:15:03
Original
333 people have browsed it

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

Completely Hiding Yii2 Frontend and Backend Paths

Understanding the Problem

Yii2's Advanced Application Template creates frontend and backend sections in separate directories. By default, these directories appear in URLs, which can be undesirable for a clean and professional-looking presentation. This article aims to guide you in hiding these directories completely.

Step-by-Step Guide

1. Root .htaccess Configuration

In the project's root directory (e.g., advanced/), create a .htaccess file and paste the following code:

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
Copy after login

2. Request Component

Create a components/Request.php file in the common directory and add the following code:

<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>
Copy after login

3. Configuring Frontend and Backend Applications

In frontend/config/main.php and backend/config/main.php, modify the request and urlManager components as follows:

frontend/config/main.php

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]</code>
Copy after login

backend/config/main.php

<code class="php">'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]</code>
Copy after login

Optional Step 4 (if Previous Steps Fail)

Create a .htaccess file in the web directory and add the following code:

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

Result

After applying these changes, you can access your website at http://localhost/yii2app and http://localhost/yii2app/admin without any frontend or backend paths appearing in the URLs.

The above is the detailed content of How to Completely Hide Frontend and Backend Paths in Yii2 Advanced Applications?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template