Yii and .htaccess file on production server

.htaccessproduction-environmentyii

I am new to yii and have some problem in configuring .htaccess file on production server.

On localhost :

Location of Application : /www/connect_donors/

Default URL that yii provides is,

http://localhost/connect_donors/index.php?r=controllerId/functionName

We used the urlManager in /connect_donors/protected/config/main.php to configure the SEO friendly url's..

'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>'

Now the URL that was working was

http://localhost/connect_donors/index.php/controllerId/functionName

Then I used the .htaccess file to remove index.php from the above URL.

Location of .htaccess is : /connect_donors/.htaccess

Following is .htaccess file,

RewriteEngine On
RewriteBase /connect_donors
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

URL Chenged to :

http://localhost/connect_donors/controllerId/functionName

Everything working fine and awesome.

But yesterday I uploaded the application on production server.

On Production Server

Everything remained same only I had to change the .htaccess file.

The .htaccess file on server is,

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

Now the following url:

http://donorsconnect.com/

loads the home page of server properly.

But,
http://donorsconnect.com/profile

redirects again to home page.

NOTE : There is no session set on the "profile" controller.

class ProfileController extends CController
{
    public function actionIndex()
    {
        $this->render('index');
    }
}

I tried lot of things, changing the .htaccess file to different codes. but none helped me.

Any help is appreciable.

Solution

I finally got the solution and the mistake I had done.

My Components had a request array containing baseUrl.

'components'=>array(
        ...
        'request' => array(
            'baseUrl' => 'http://donorsconnect.com',
        ...),

Due to this it was not loading. I did not find the real reason for that.

But after removing that 'request' array, its loading fine.

Check link,
http://donorsconnect.com/profile

Best Answer

You should not hide index.php like this, read carefully : http://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x

You should set showScriptName to false in your main config :

'urlManager'=>array(
  .....
  'showScriptName'=>false,
  .....
),

And your .htaccess should look like this :

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php
Related Topic