さくらインターネットで複数の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 | - |
これだと、
- myapp.com → 404 Not Found
- myapp.com/myapp → 404 Not Found
ドキュメントルートが/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は今は考慮しない。これで、
- accountid.sakura.ne.jp → myappにアクセス
- myapp.com → 404 Not Found
- myapp.com/myapp → 404 Not Found
ダメ。
なんでかなー、と思いつつ調べてみると、
さくらインターネットではドキュメントルート以下のディレクトリにエイリアスを設定し、そのドメインにアクセスがあった場合にもドキュメントルートは
/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]
- accountid.sakura.ne.jp/myapp → Internal Server Error
- myapp.com → Internal Server Error
だめ。
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 | マルチドメイン | / | - |