Ubuntu Serverにおけるapacheの設定ファイル
apache の設定ファイルは、ずっと httpd.conf だとばかり思っていた。たとえば
MacPorts で作った環境なら
/opt/local/apache2/conf/httpd.conf
xampp 環境なら
/applications/xampp/xamppfiles/etc/httpd.conf
といったように。(実際、これらのファイルを編集して色々と設定の変更を行っていた)
でも、VMware Fusion にインストールした Ubuntu Server の場合は違った。httpd.conf はあるにはあるけれど、空だし。(場所は/etc/apache2/httpd.conf)
今勉強している CodeIgniter のソースをこの Ubuntu Server にもっていくと、どうにもうまく mod_rewrite が働かなくて、肝心のページが 404 で見つからない状態。MacPorts や xampp 環境で対応していた処理(記述)を Ubuntu 上でもしたけれど(httpd.conf への書き込み)結果は変わらず。mod_rewrite が働いていない模様。
たまたま見つけた blog エントリで、初めて見るものがあったので、これを試したら見事成功した。ようは、単純に「設定を変更するための設定ファイルを間違えていた」ということだった。
他の Linux ディストリビューションは知らないけれど、Ubuntu においては、apache の設定ファイルは
/etc/apache2/sites-available/default
ということだった。(Ubuntu の Apache で、PHP を有効にする方法)
$ sudo vim /etc/apache2/sites-available/default
で、このファイルを開いて以下の部分の「AllowOverride」を「All」にし、apache を再起動。
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All # この部分がデフォでは None だった
Order allow,deny
allow from all
</Directory>
前述の参照 blog エントリにあった +ExecCGI とか、DirectoryIndex index.php とかの部分は、別に関係ないようだったので記述しなかった。(AllowOverride の部分だけしか変更しなかった)
これで apache にインストールした mod_rewrite と、CodeIgniter のディレクトリに配置した .htaccess(後述)の設定が有効になって
http://IPアドレス/CodeIgniter/コントローラ名
に、きちんとアクセスできるようになった。
/var/www/CodeIgniter/.htaccess の内容
RewriteEngine on
RewriteCond $1 !^(index\.php|css|user_guide|.+\.gif$|.+\.jpg$|.+\.png$|.+\.js$)
RewriteRule ^(.*)$ /CodeIgniter/index.php/$1 [L]
と思ったら、やっぱり駄目だった。
チュートリアルで作成したページ遷移がうまく働かない。
(あとでちゃんとエクスポートのやり方を読みながらやってみよう)
07/06/2009 追記:解決
チュートリアルで作成したコンタクトフォームの画面遷移を正常な状態にすることが出来た。なんてことはなくて、CodeIgniter の設定ファイルでの base_url の指定のせいだった。local における xampp 環境では「localhost」で良かったんだけど、仮想マシン上で実行する場合にはここを適宜変更しておかないと(IPアドレス直指定) local のほうへ繋ぎにいってしまう。なので、ここ設定部分を以下のように変更する。
/var/www/CodeIgniter/system/application/config/cofig.php
$config['base_url'] = “http://localhost/CodeIgniter/”;
↓
$config['base_url'] = “http://Ubuntu Server の IPアドレス/CodeIgniter/”;
Ubuntu Server の IPアドレス部分は、Ubuntu 上でコマンド「ifconfig」を打つことで知ることが出来る。
Tags: setting

参考になりました。
どうもありがとうございます!(・∀・)
It’s my pleasure(・∀・)