首页  >  文章  >  后端开发  >  如何使用 .htaccess 隐藏 Yii2 中的前端和后端路径?

如何使用 .htaccess 隐藏 Yii2 中的前端和后端路径?

Susan Sarandon
Susan Sarandon原创
2024-10-30 17:42:03329浏览

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>

第三步:前端和后端主要配置

在 frontend/config/main.php 中在 backend/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 步(可选):Web 目录中的 .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