Document root web-сервера, должен быть:

Путь http://demo.ru/ должен использовать document root - /path/to/demo.ru/frontend/web/

Для Apache это может быть следующее:

<VirtualHost *:80>
   ServerName demo.ru
   DocumentRoot /path/to/demo.ru/frontend/web/

   <Directory "/path/to/demo.ru/frontend/web/">
       # use mod_rewrite for pretty URL support
       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

       # use index.php as index file
       DirectoryIndex index.php

       # ...other settings...
   </Directory>
</VirtualHost>

Для nginx:

server {
     charset utf-8;
     client_max_body_size 128M;

     listen 80; ## listen for ipv4
     #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

     server_name demo.ru;
     root        /path/to/demo.ru/frontend/web/;
     index       index.php;

     access_log  /path/to/demo.ru/log/frontend-access.log;
     error_log   /path/to/demo.ru/log/frontend-error.log;

     location / {
         # Redirect everything that isn't a real file to index.php
         try_files $uri $uri/ /index.php?$args;
     }

     # uncomment to avoid processing of calls to non-existing static files by Yii
     #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
     #    try_files $uri =404;
     #}
     #error_page 404 /404.html;

     location ~ \.php$ {
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
         fastcgi_pass   127.0.0.1:9000;
         #fastcgi_pass unix:/var/run/php5-fpm.sock;
         try_files $uri =404;
     }

     location ~ /\.(ht|svn|git) {
         deny all;
     }
 }