かなり困って、色々ググって、ようやっと解決したので記録しておく。
やりたかったことは、メインサイトとマルチドメイン2サイトの系3つを管理したかった。
http://control.shado.jp/2010/0930112537.html
こちらのサイトを参考にして、自分なりに色々試した結果。
前提として、
/homeにアクセスすると、example.com
その他マルチドメインとして、
/home/example2.com
/home/example3.com
のディレクトリで、それぞれwwwありとなしのurlでアクセス可能にする。
また、http://example.com/example2.comなどでアクセスされたら困るので404を返す。
さらに、WordPressでパーマリンク設定いじった場合の.htaccessも合わせる。
と、いった具合のことを.htaccessでどうやるのかを考えました。
答えは上の参考サイトでほぼ出ていたのですが、どうもうまくいかなくて、書き方の順番が間違えていました。
/home直下のWordpress用リダイレクト設定がじゃましてしまっていたので、一番下にすると問題なかった。
RewriteBase は無くてもいけるっぽい。
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /#2のドメイン名ディレクトリに直接アクセスされたら404
RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} ^/(example2.com|www.example2.com)/
RewriteRule ^(.*)$ /$1 [L,R=404]
#3のドメイン名ディレクトリに直接アクセスされたら404
RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} ^/(example3.com|www.example3.com)/
RewriteRule ^(.*)$ /$1 [L,R=404]#example2用のリダイレクト
RewriteCond %{HTTP_HOST} ^(example2.com|www.example2.com)
RewriteCond %{REQUEST_URI} !^/(example2.com|www.example2.com)/
RewriteRule ^(.*)$ /example2.com/$1/index.php [L]
#example3用のリダイレクト
RewriteCond %{HTTP_HOST} ^(example3.com|www.example3.com)
RewriteCond %{REQUEST_URI} !^/(example3.com|www.example3.com)/
RewriteRule ^(.*)$ /example3.com/$1/index.php [L]#/home直下のwordpress用パーマリンク設定
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
こうなりました。
無論、/home/example2.com と /home/example3.com のほうにもWordpressが入っているので、そちらのほうにも.htaccessでパーマリンク設定は書いておくべし。