サーバー構築を構築しています。経験があまりないので、メモとして今回の問題点と解決策をまとめます。
【環境】
Cent OS 5.7
Apache 2.2.3
PHP 5.2.10
【問題1】
.htaccessでmod_rewriteを使ってリダイレクトをしようとしても動きませんでした。
エラーログ(/var/log/httpd/error_log)を確認すると、下記のエラーがありました:
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /XXX/XXX/XXX
→ 解決策: /etc/httpd/conf/httpd.confの<Directory>セクションの設定をします。
(1)<Directory>セクションのOptionにFollowSymLinksをつけなければなりません。
そうしないと、上記のエラーが出てきます。
(2)<Directory>セクションのAllowOverrideをNoneに設定してはいけません。
Noneに設定してしまうと、.htaccessでの上書きが出来なくなります。AllかFileInfoに設定します。
↓↓大体は下記の感じです↓↓
<Directory "/XXX/XXX/XXX/"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
詳細は下記サイトを参照してください。
Apache HTTP サーバ
【問題2】
複数ドメインのDocumentRootの設定
例えば、httpd.confのDocumentRootは”/var/www/html”だとします。
そうすると、直接ipアドレスでアクセスしてくると、/var/www/htmlがルートになります。
→ ただ、事前に取得しておいたドメインexample.comでアクセスすると、/var/www/htmlではなく、/var/www/htmlの下の「aaa」というディレクトリーを見るように設定したいです。
つまり、「http://www.example.com」 ⇒ 「/var/www/html/aaa」にしたいです。
→ 解決策: /etc/httpd/conf/httpd.confの<VirtualName>セクションの設定をします。
例えば、一番簡単な設定は下記のようです↓↓
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/aaa ServerName www.example.com </VirtualHost>
もしhttps(SSL)にも対応したい場合には、443番ポートなので、下記のも必要です↓↓
NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot /var/www/html/aaa ServerName www.example.com:443 </VirtualHost>
他にもいろいろ設定できますので(CustomLogやErrorLogやServerAdminなど)、下記サイトを参照してください。
Apache バーチャルホスト説明書 – Apache HTTP サーバ
※注1:CustomLogを設定する時、ログのフォーマット「LogFormat」の設定も必要です。
例えば:
LogFormat "%h %v %l %u %t \"%r\" %>s %b" commonvhost NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/aaa ServerName www.example.com CustomLog /etc/httpd/logs/example.com-access_log commonvhost </VirtualHost>
LogFormatの詳細は、下記サイトを参照して下さい。
ログファイル – Apache HTTP サーバ
【問題3】
PHPのDOMのインストール
今回の件はDOMが必要ですが、インストールされていません。
↓↓下記のようにyumで簡単にインストールできました↓↓
yum install php-xml