Removing index.php from URL cause 404 in yii
apache, php, ubuntu, yii
Solution
If you are working on Linux(say ubuntu) then go to the path `/etc/apache2/sites-available/` there you will find a file named as `default`,
<Directory /var/www/> <--- ***root directory***
Options Indexes FollowSymLinks MultiViews
AllowOverride all <---- ***change this line***
Order allow,deny
allow from all
</Directory>
and i think your problem will resolve.
Thanks.
Problem
The problem Initial problem: Hi I have a newly made Yii site where I want to remove the index.php from the URL. Example: "/index.php/site/index" should be "/site/index" I have been using this http://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x guide but i only receive 404. I hope that you are able to point a mistake or help me debug this problem! Please let me know if I have left out any relevant information. OBS: The "home" page works as intended, other pages are broken. Status of the problem: It seems like it is an apache/ubuntu problem with mod_rewrite.so Answer After help from different people it all works now :D I had to install "rewrit" to get it running, i did that by writing Running a2enmod rewrit The below configuration of my system solved the problem for me, I hope this thread will help others in similar problems. My system ``` Server version: Apache/2.2.22 (Ubuntu) Server built: Nov 8 2012 21:37:45 ``` Apache httpd.conf ``` <Directory "/var/www/MY_SITE/FOLDER_CONTAINING_YII/"> AllowOverride All #... </Directory> LoadModule rewrite_module modules/mod_rewrite.so ``` This is the entire content of the file Apache Error Log ``` File does not exist: /.../htdocs/site, referer: http://.../htdocs/index.php/site/index ``` I added the dots Restart Apache ``` kah@webaalborg:/etc/apache2/sites-available$ sudo service apache2 restart * Restarting web server apache2 [Mon Nov 26 20:16:35 2012] [warn] module rewrite_module is already loaded, skipping ... waiting [Mon Nov 26 20:16:36 2012] [warn] module rewrite_module is already loaded, skipping [ OK ] ``` /ect/apache2/available-sites/default ``` ... DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> <Directory /var/www/MY_SITE> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> ... ``` Yii Directory structure: - framework - htdocs - assets - css - .htaccess - index.php - index-test.php - themes - protected .htaccess ``` 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 ``` main.php config file ``` 'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'caseSensitive'=>false, 'rules'=>array( '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ), ```