Url Configuration And Htaccess With Yii


(Varun2k7dce) #1

I have set up my yii application with the following configuration :


 'urlManager'=>array(

			'urlFormat'=>'path',

			'showScriptName'=>false,

			'rules'=>array(

			

			

			

			'/'=>'',

			'site'=>'',

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

			'<controller:\w+>'=>'<controller>',

                    )

My mod_rewrite is enabled . I have confirmed the same through multiple ways .

My htacccess reads :


RewriteEngine on

                   # if a directory or a file exists, use it directly

                   RewriteCond %{REQUEST_FILENAME} !-f

                   RewriteCond %{REQUEST_FILENAME} !-d


                   RewriteRule ^.*$ /index.php?

I have come across multiple similar posts on the forums , tried everything suggested in them but it does not work out .

I can access the index page (home page) , however every other link is being looked at like a directory(giving a 404) instead of controller/action pair . httpd.conf has re write enabled . I looked at apache error logs and found the following :


[error] [client 182.68.214.169] File does not exist: /home/curatio/public_html/curatio/site, referer: 216.224.170.30/~curatio/curatio/

[Wed Jan 16 08:42:20 2013] [error] [client 182.68.214.169] File does not exist: /home/curatio/public_html/curatio/site, referer: 216.224.170.30/~curatio/curatio/site/contact

/home/curatio/public_html/curatio/ is where my website files are , however it is looking for a site folder .

Any ideas ? I would be happy to provide more details as well .

Note : It works fine with ?r (/216.224.170.30/~curatio/curatio/?r=site/contact) works just fine .

I have removed the http above to not embed a link .


(Maurizio Domba Cerin) #2

Hi and welcome to the Yii forum…

You added there two strange rules, try to remove the first two rules (’/’=>’’ and ‘site’=>’’)


(Varun2k7dce) #3

Thanks for reply . The two rules ensure that when no controller is mentioned in the url , user lands on home page and works fine on local. I changed the rules to standard types on the deployment server but to no avail . I additionally added a echo followed by an exit statement in the index.php . It was followed when I used no controller action pair(indicating it picked up index.php by default) , however when I entered a controller action pair it threw a 404 . This indicates that there is something definitely wrong with my htaccess file , doesnt it ?

Would sharing virtual hosts and directory configuration from httpd be of any help ?


(Varun2k7dce) #4

Deny from all works fine in the htaccess file for the app directory . However I observed the following :

  1. Removing everything from htaccess still lands the index page . (probably default behaviour to look for index.php)

  2. I changed the name of index file so that there was no file named index in the application root directory : it threw a 403 .

  3. For any other controller action pair it seems to look for folders under apache http folder . I am not sure why this is happening .


(Maurizio Domba Cerin) #5

Try to change the last htaccess line to


RewriteRule . index.php

or if it does not work to


RewriteRule ^.*$ index.php