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>',
),
),