【解決】Flickrのウェブアルバムと同等の機能を持つdfGallery 2.0をさくらインターネットの共用サーバーに設置する

前に、下のようなサクラインターネットの共用レンタルサーバに『dfGallery 2.0』を設置する記事を書きました。しかし、これはとてもスマートではなくソースを書き換えて力技で無理やり動かすという方法でした。

◇Flickrのウェブアルバムと同等の機能を持つdfGallery 2.0をさくらインターネットの共用サーバーに設置する – KUMA TYPE

そして、一年以上の歳月が経って、所謂『神』が降臨されコメント欄にお告げを下さいましたw。

kariya_mitsuru | 2010年8月29日 18:46 | 返信

こんばんは。
当方もこちらを参考にさくらのサーバに導入しました。
結果、.htaccess を以下の通り修正するだけで動作しました。

1. Options ディレクティブ 2 つをコメントアウトする。
2. RewriteRule ディレクティブで index.php の後ろの / を ? に変える。
3. RewriteBase ディレクティブを追加する。

3 の手順は、こちらが独自ドメインで使用しているために必要でした。
独自ドメインでなければなくても動きましたので。

以上、ご報告まで。

 

『あなたが神か・・・。』

というわけで、.htaccessを書き換えるだけで、dfGallery 2.0を動かすことが出来る事がわかりましたので、実際に試してみました。

そして、とりあえず動いたという結果を先に紹介しておきます。

◆専用ページでアルバムを表示
http://tools.kumacchi.com/gallery2/

◆ブログに貼り付ける形式

 

そういうわけで、『.htaccess』の具体的な編集箇所を説明したいと思います。あらかじめ上の元の記事を読むと理解が深まると思います。

まず、オリジナルの.htaccessはこのようになっています。

<FilesMatch "\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

Options -Indexes
Options +FollowSymLinks

ErrorDocument 404 /index.php
DirectoryIndex index.php

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

 

そして、.htaccessの必要な箇所を次のように書き換えます。

<FilesMatch "\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

#Options –Indexes
#Options +FollowSymLinks

ErrorDocument 404 /index.php
DirectoryIndex index.php

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^(.*)$ index.php/$1 [L]
  RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>

コメントアウトした部分を赤、追加した部分を青にしています。変更点をわかりやすくする為に元の部分をコメントアウトしました。要らなければ削除して構いません。

さくらインターネットの共用レンタルサーバで、運営しているサイトのドメインが下のような形式で始まるサイトの場合はこれだけで動くようになります。

http://<自分のアカウントID>.sakura.ne.jp/

具体的には

http://example.sakura.ne.jp/gallery/

的なURL

 

次にマルチドメイン機能をつかって、さくらインターネットのサブドメインや独自ドメインで運用している場合で、URLが実際のファイルパスを表してない場合に『RewriteBase』で正しく指定してあげる必要があります。ちょっとややこしいので例を上げて詳しく説明します。

さくらインターネットの場合、FTPなどでサーバに接続するとわかりますが、自分のホームページのパスは以下のようになります。ホームページのデータはwwwディレクトリ配下にアップロードすることになります。

/home/<自分のアカウントID>/www/

これが

http://<自分のアカウントID>.sakura.ne.jp/

で、ホームページにアクセスしたときに表示されることになります。

ちょっと分かりにくいかもしれませんが、パスとしては一番根っ子の”/”を表す事になります。

しかしマルチドメイン機能を使って、さくらインターネットが提供している「nyanta.jp」「x0.com」等のドメインを利用したサブドメインや自分で取得した独自ドメインを利用する場合、wwwディレクトリの直下がホームページにせず大抵の場合wwwディレクトリの下に専用のディレクトリを作成してそこを参照するようにするわけです。

例えば、サンプルとしてdfGaller2.0を設置したtools.kumacchi.comというkumacchi.comという独自ドメインを使ったサブドメインですがこれは実際には

/home/<自分のアカウントID>/www/tools/

というフォルダを作ってその下にプログラムなどをアップロードして設置しています。

http://tools.kumacchi.com/

にアクセスしたときには

/home/<自分のアカウントID>/www/tools/

の中を表示しているわけです。

ちなみにドメインの設定は

コントロールパネルの左側にある「ドメイン設定」から行ないます。

20100198

画面は下のようになります。

「パス」という部分があるのがわかると思います。これが”/”だと「/home/<自分のアカウントID>/www」ディレクトリ直下です。

ドメイン名が、tools.kumacchi.comのところを見るとパスが/toolsになっているのがわかると思います。これは、実際には

「/home/<自分のアカウントID>/www/tools」

となり、wwwの下にtoolsというディレクトリを作成してそこを参照するように設定しているということになります。

独自ドメインやサブドメインを使った場合でも必ずしも「RewriteBase」ディレクティブでパスの修正を指定しなければならないというわけでは有りません。例えば、ドメイン「kumacchi.com」を見てもらうとわかるかと思いますが、ドメインkumacchi.comには専用のディレクトリを作成せずにパスは”/”を参照するようになっています。この場合にはパスのズレは発生しないので「RewriteBase」ディレクティブの指定は必要ありません。

20100197

(中略)

20100199

(中略)

20100196

(以下略)

 

wwwディレクトリの下にtoolsというディレクトリを作成して、tools.kumacchi.comでアクセス出来るようにマルチドメインを指定している環境の場合でtoolsというディレクトリの下にgallery2というディレクトリを作成しさらにその下にdfgというディレクトリを作成してこの中にdfGallery 2.0をアップロードした場合

http://tools.kumacchi.com/gallery2/dfg

というパスでdfGallery2.0の設定画面にアクセスすることになりますが、その場合、具体的には下のように.htaccessにRewriteBaseディレクティブを指定します。

<FilesMatch "\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
  Order allow,deny
</FilesMatch>

#Options –Indexes
#Options +FollowSymLinks

ErrorDocument 404 /index.php
DirectoryIndex index.php

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /gallery2/dfg/
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^(.*)$ index.php/$1 [L]
  RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>

 

つまりどういう事かというと、RewriteBaseによって

http://tools.kumacchi.com/tools/gallery2/dfg

ではなく

http://tools.kumacchi.com/gallery2/dfg

ですよ、ということを教えているわけです。

マルチドメイン設定でwww直下の”/”ではなく、「www/tools」、”/tools”を参照するようになってはいますが、本来はwwwの配下にあるディレクトリなのでurlにはtoolsが含まれるはずですが、これを防ぐための設定です。

ちょっと分かり難いかもしれませんが、がんばって色々試して理解してみてください。

◆参考ページ:Apache module mod_rewrite

タグ :