"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إخفاء مسارات الواجهة الأمامية والخلفية بشكل كامل في تطبيقات Yii2 المتقدمة؟

كيفية إخفاء مسارات الواجهة الأمامية والخلفية بشكل كامل في تطبيقات Yii2 المتقدمة؟

تم النشر بتاريخ 2024-11-18
تصفح:425

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. طلب المكون

قم بإنشاء ملفمكونات/Request.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();
        }
    }
}

3. تكوين تطبيقات الواجهة الأمامية والخلفية

في الواجهة الأمامية/config/main.php والواجهة الخلفية/config/main.php، قم بتعديل مكونات الطلب وurlManager كما يلي:

الواجهة الأمامية /config/main.php

'request' => [
    'class' => 'common\components\Request',
    'web' => '/frontend/web'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]

backend/config/main.php

'request' => [ 'class' => 'components\Request'، 'الويب' => '/الواجهة الخلفية/الويب', 'adminUrl' => '/admin' ]، 'مدير URL' => [ 'enablePrettyUrl' => صحيح، 'showScriptName' => خطأ ]
'request' => [
    'class' => 'common\components\Request',
    'web' => '/backend/web',
    'adminUrl' => '/admin'
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false
]
الخطوة الاختيارية 4 (في حالة فشل الخطوات السابقة)

قم بإنشاء ملف htaccess في دليل الويب وأضف الكود التالي:

RewriteEngine على أعد كتابة Cond %{REQUEST_FILENAME} !-f أعد كتابة Cond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
النتيجة

بعد تطبيق هذه التغييرات، يمكنك الوصول إلى موقع الويب الخاص بك على http:/ /localhost/yii2app وhttp://localhost/yii2app/admin دون ظهور أي مسارات أمامية أو خلفية في عناوين URL.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3