さくらインターネットで複数のCatalystアプリケーションをマルチドメインで動かす設定がわからない

こんなフォルダ構成で、

/home/accountid/www/
 ├myapp/ ←Catalystで作ったアプリケーションその1
 └myapp2/ ←Catalystで作ったアプリケーションその2

独自ドメイン2つ取って、

  • myapp.com → myappにアクセス
  • myapp2.com → myapp2にアクセス

っていうことがやりたいけどできない。できてないので、記事を最後まで読んでも解決できません。なんか最近つまづいて諦めた記事ばっかり書いてるなー。

独自ドメイン使わないのなら、こちらの記事どおりにすればできる。
さくらインターネットのCGIでCatalystを動かす設定(完全版?) - LAPISLAZULI HILL#Catalyst - Catalystグループ

/home/accountid/www/.htaccess を作って、

AddHandler cgi-script .pl

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/myapp2/?script/myapp2_cgi.pl
RewriteRule ^myapp2/(.*)$ myapp2/script/myapp2_cgi.pl/$1 [PT,L]

RewriteCond %{REQUEST_URI} !^/myapp/?script/myapp_cgi.pl
RewriteRule ^myapp/(.*)$ myapp/script/myapp_cgi.pl/$1 [PT,L]

こうすると、

  • accountid.sakura.ne.jp/myapp/ → myappにアクセス
  • accountid.sakura.ne.jp/myapp2/ → myapp2にアクセス

となる。

ここで、さくらに独自ドメインを設定する。設定内容はデフォルトだとこんな感じ。

ドメイン アクション パス 共有SSL
myapp.com マルチドメイン / -

この状態だと、

  • myapp.com → http://accountid.sakura.ne.jp/にアクセス(フォルダ構成が表示される)
  • myapp.com/myapp → myappにアクセス
  • myapp.com/myapp2 → myapp2にアクセス

となる。

独自ドメインから直接myappにアクセスできるように、マルチドメインの対象のフォルダを変更してみる。

ドメイン アクション パス 共有SSL
myapp.com マルチドメイン /myapp -

これだと、

ドキュメントルートが/home/accountid/www/myapp/になったのか?ということで、試しにこんな設定でやってみる。
/home/accountid/www/.htaccess

AddHandler cgi-script .pl

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/myapp/?script/myapp_cgi.pl
RewriteRule ^(.*)$ myapp/script/myapp_cgi.pl/$1 [PT,L] ← パターンのmyappを消した。

myapp2は今は考慮しない。これで、

ダメ。

なんでかなー、と思いつつ調べてみると、

さくらインターネットではドキュメントルート以下のディレクトリにエイリアスを設定し、そのドメインにアクセスがあった場合にもドキュメントルートは
/home/hoge/www/
であるように認識されます。
http://www.soycms.org/viewtopic.php?f=6&t=36#p76

とのこと。
SOY CMSっていうCMSの設定なのだけれども、こちらは.htaccessを/home/accountid/www/myappにあたるディレクトリに置いている模様。では、ということで、
/home/accountid/www/.htaccess の名前を変えて無効にし、新たに
/home/accountid/www/myapp/.htaccess を作る。内容は以下。

AddHandler cgi-script .pl

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/myapp/?script/myapp_cgi.pl
RewriteRule ^(.*)$ myapp/script/myapp_cgi.pl/$1 [PT,L]

だめ。

SOY CMSでは RewriteBase / を付けれと書いてあるので付けてみると、

AddHandler cgi-script .pl

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/myapp/?script/myapp_cgi.pl
RewriteRule ^(.*)$ myapp/script/myapp_cgi.pl/$1 [PT,L]
  • accountid.sakura.ne.jp/myapp → myappにアクセス
  • myapp.com → 404 Not Found

これもだめ。

と、ここまででいったん諦めた。今はこういう設定にしてる。複数アプリは動かせないけど、 myapp.com で myapp にアクセスできる。

/home/accountid/www/.htaccess

AddHandler cgi-script .pl

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/myapp/?script/myapp_cgi.pl
RewriteRule ^(.*)$ myapp/script/myapp_cgi.pl/$1 [PT,L]

さくらのマルチドメインの設定

ドメイン アクション パス 共有SSL
myapp.com マルチドメイン / -