コントローラー/ビューなどをナビゲートするためにルールを書き換える必要がある CodeIgniter プロジェクトがあります。Ubuntu 12.04 に hiphop-php を正しくインストールしました。サイトで提供されているサンプルの WordPress インストールと書き換えルールを含め、完全に動作します。
ただし、CodeIgniter の index.php/controller セットアップで機能する適切な書き換えルールを理解する必要があり、私自身はあまり運がありませんでした。
WP 書き換え用のサンプル hiphop-php 構成ファイルを次に示します。
VirtualHost {
* {
Pattern = .*
RewriteRules {
dirindex {
pattern = ^/(.*)/$
to = $1/index.php
qsa = true
}
}
}
}
StaticFile {
FilesMatch {
* {
pattern = .*\.(dll|exe)
headers {
* = Content-Disposition: attachment
}
}
}
Apache 用のサンプル CodeIgniter mod_rewrite ファイルは次のとおりです。
http://www.farinspace.com/codeigniter-htaccess-file/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
### Canonicalize codeigniter URLs
# If your default controller is something other than
# "welcome" you should probably change this
RewriteRule ^(welcome(/index)?|index(\.php)?)/?$ / [L,R=301]
RewriteRule ^(.*)/index/?$ $1 [L,R=301]
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
###
# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# 'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
基本的に書き換えに必要なのは、CodeIgniter の index.php コントローラーを使用してリクエストを適切にルーティングすることだけです。これは、Apache 書き換えルールの最後の部分で行われているようです。いくつかの例を見た後、一緒にハックできる残りの部分。
本当にありがとう!