این مقاله از به صورت کامل از سایت مهدی رجبی قرار داده شده است.
صرفا جهت قرار داشتن در آرشیو سایت استفاده شده است.
در مقاله ی بعدی همین موضوع را برای وب سرویس 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>', ], ],