vishuB
vishuB

Reputation: 4261

Yii2 Advance Application Remove '/web' and 'index.php' in frontend and backend

I referred the below given link

Yii2 htaccess - How to hide frontend/web and backend/web COMPLETELY

Remove index.php from url after removing web folder from frontend and backend in yii2

but, i did't get the output

show below URL

localhost/yii2advance/backend/web/index.php?r=site%2Flogin

localhost/yii2advance/frontend/web/index.php?r=site%2Flogin

in above url i remove /web/index.php in both frontend and backend

I get URL like

localhost/yii2advance/backend/site/login

localhost/yii2advance/frontend/site/login

Upvotes: 1

Views: 4465

Answers (2)

Amin Shafiee
Amin Shafiee

Reputation: 425

1- put this code in .htaccess flie in yii2advance folder (main folder of project)

# prevent directory listings
Options -Indexes
IndexIgnore */*

# follow symbolic links
Options FollowSymlinks
RewriteEngine on
RewriteRule ^admin(/.+)?$ backend/web/$1 [L,PT]
RewriteRule ^(.+)?$ frontend/web/$1

above code convert

'localhost/yii2advance/frontend/web/index.php'

to

'localhost/yii2advance/'

and it convert

'localhost/yii2advance/backend/web/index.php'

to

'localhost/yii2advance/admin'

2- add this code to frontend/web/.htaccess and backend/web/.htaccess file:

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

3- in backend/config/main.php put this codes:

'homeUrl' => '/yii2advance/admin',
'components' => [
'request' => [
        'baseUrl' => '/yii2advance/admin', // localhost/yii2advance/admin
    ],
    'urlManager' => [
         'enablePrettyUrl' => true,
         'showScriptName' => false,
         'rules' => [],
    ],

4- in frontend/config/main.php put this codes:

'homeUrl' => '/yii2advance',
'components' => [
'request' => [
    'baseUrl' => '/yii2advance', // localhost/yii2advance
 ],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [],
],

Upvotes: 7

Rafael Barros
Rafael Barros

Reputation: 1053

Create a ".htaccess" file in the "web" directory with:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

My pull request was accepted about this. It will be in the 2.0.19 version.

Upvotes: -1

Related Questions