mod_rewriteの設定

mod_rewriteを設定することで、

http://example.com/adiary/adiary.cgi/123

というURLを

http://example.com/adiary/123

と、adiary.cgiを含めない形にすることができます。

環境の確認

  • Apacheを利用していて .htaccess が許可されている
  • Apacheに mod_rewrite がインストールされている

レンタルサーバなど情報がない場合は、試しに

RewriteEngine On

と書いた .htaccess を置いてみてください。アクセスして「500 Internal Server Error」にならなければ、mod_rewriteが利用できるかもしれません。*1

*1 : そもそも.htaccessが許可されていない場合は、エラーにすらなりません。

設定方法

http://example.com/adiary/adiary.cgi に adiary が設置されている場合、次のように記述して adiary.cgi と同じディレクトリに置きます。

RewriteEngine	On
RewriteCond	%{REQUEST_FILENAME}	!-f
RewriteRule	^(.*)$			adiary.cgi/$1	[L]

ログイン後の管理メニューの下にも設定のヒントが書かれています。参考にしてください。

ディレクトリをまたがる mod_rewrite

Apache 2.xの場合です。

CGI設置場所 : http://example.com/adiary/adiary.cgi

見せたいURL : http://example.com/

以下の .htaccess を http://example.com/ に相当するディレクトリに設置します。

RewriteEngine   On
RewriteRule     ^adiary/                -                               [L]
RewriteCond     %{REQUEST_FILENAME}     !-f
RewriteRule     ^(.*)$                  adiary/$1
RewriteCond     %{REQUEST_FILENAME}     !-f
RewriteRule     ^adiary/(.*)$           adiary/adiary.cgi/$1            [L]
  • パス/adiary/ にある .htaccess では mod_rewrite を設定しないでください。
  • pub/ から adiary/pub/ へシンボリックリンクを貼らないとアルバムでゴミ箱内の画像が表示されないことがあります。
    $ ln -s adiary/pub pub