حذف backend و frontend از url در Yii 2(وب سرور آپاچه apache)

این مقاله از به صورت کامل از سایت مهدی رجبی قرار داده شده است.
صرفا جهت قرار داشتن در آرشیو سایت استفاده شده است.
در مقاله ی بعدی همین موضوع را برای وب سرویس IIS قرار خواهم داد
لینک زیر :
حذف backend و frontend از url در Yii 2

کسانی که از نسخه ۲ این فریمورک استفاده می کنند به مشکل حذف پوشه backend و frontend بر میخوارند . بنده در این قصد دارم با استفاده از کد .htaccess آدرس های زیبا برای پروژمون ایجاد کنیم .

در پوشه اصلی پروژه یعنی بیرون backend و frontend یک فایل .htaccess ایجاد کنید و کد زیر را در آن قرار دهید .

# prevent directory listings
    Options -Indexes
    IndexIgnore */*
    # follow symbolic links
    Options FollowSymlinks
    RewriteEngine on
    RewriteRule ^admin(/.+)?$ backend/web/$1 [L,PT]
    RewriteRule ^(.+)?$ frontend/web/$1

کد بالا
localhost/project/frontend/web/index.php را به localhost/project/ تبدیل می کند .
و
localhost/project/backend/web/index.php را به localhost/project/admin تبدیل می کند.
توجه داشته باشید اگر به جای کلمه admin خواستید کلمه دیگیری باشد به جای admin در .haccess از کلمه دیگری استفاده کنید.

برای حذف index.php از هردو frontend و backend فایل .htaccess در هر دو فولد ایجاد کنید و کد زیر را در آن قرار دهید (در داخل فولدر web).

RewriteEngine on  
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php

و حالا برای اینکه فریمورک با آدرس جدید کار کند ابتدا به frontend/config/main.php بروید آدرس پروژه اصلی خود را بدهید.
در بیرون از components کد زیر را قرار دهید.

'homeUrl' => '/project',   // localhost/project

این کد را هم داخل components قرار دهید.

'request' => [
            'baseUrl' => '/project', // localhost/project
        ],
        'urlManager' => [
             'enablePrettyUrl' => true,
             'showScriptName' => false,
             'rules' => [
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
                ],
      ],

و حال به فایل backend/config/main.php بروید و بیرون از components کد زیر را قرار دهید.

'homeUrl' => '/project/admin',   //locahost/project/admin 

و این را هم داخل components قرار دهید .

'request' => [
            'baseUrl' => '/project/admin', // localhost/project/admin
        ],
        'urlManager' => [
             'enablePrettyUrl' => true,
             'showScriptName' => false,
             'rules' => [
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
                ],
       ],

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *