Оставлю это здесь, дабы не забыть. Надоело перекапывать google на эту тему. Есть несколько методов реализовать ЧПУ в контексте фреймворка Yii. Самый простой, поставить Apache и использовать его mod_rewrite с вот такими правилами:
AddDefaultCharset UTF-8 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.phpНо Apache прожорлив, монструозен и не всегда нужен. В своих поделках я использую lighttpd.
Включим mod_rewrite, раскоментировав строчку mod_rewrite. Должно получится так:
server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", "mod_rewrite", )В конфигурации виртуального хоста делаем так:
$HTTP["host"] =~ "example.com" { server.document-root = "/var/www" url.rewrite-if-not-file = ( ".*\?(.*)" => "index.php?$1", "." => "index.php" ) }Или так (нужно установить и включить lighttpd-mod-magnet и lua):
$HTTP["host"] =~ "example.com" { server.document-root = "/var/www" magnet.attract-physical-path-to = ( "/etc/lighttpd/rewrite.lua" ) }Собственно сам rewrite.lua:
function file_exists(path) local attr = lighty.stat(path) if (attr) then return true else return false end end if (lighty.env["request.uri"] == "/" or not file_exists(lighty.env["physical.path"])) then lighty.env["physical.rel-path"] = "/index.php" lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"] endА если не охота конфигурировать каждый хост, то включаем simple-vhost и делаем примерно так:
$HTTP["host"] !~ "^(example\.com)$" { simple-vhost.server-root = "/var/www" simple-vhost.default-host = "example.com" simple-vhost.document-root = "public_html" url.rewrite-if-not-file = ( ".*\?(.*)" => "index.php?$1", "." => "index.php" ) }