モンスターカレンダー

« 2010年1月
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Apacheの最近のブログ記事

とあるディレクトリ以下のファイルへアクセスする際、ログインさせたい。
ディレクトリ以下が静的なページなら、PHPで認証後そのページを読み込んで表示させる方法がある。
あるいは拡張子phpにしておいて、先頭で認証ロジック呼ぶ。
が、ファイルにはPDFもあるという。
となると、思いつくのはBasic認証しかなく(いろいろ調べたけれど、他にはなかった)。

簡単に使うには .htaccess にBasic認証の記述をし、別途ユーザ(パスワード)ファイルを置く。
今回、ユーザIDとパスワードのほかにも氏名等の情報も保持したいので、会員登録の要求があった場合、ユーザファイルに書き込む&DBにもその他情報を書き込む、の2本立てかと思っていたのだが、調べるとBasic認証のユーザ情報をPostgreSQLに保持できる方法があった。
Apacheのモジュールで「mod_auth_pgsql」というもの。

http://www.giuseppetanzilli.it/mod_auth_pgsql/
ローカルはApache2だったのでそれ用のtarを落としてきて解凍。インストールはDSOで、INSTALLに書いてあるそのままの手順でOKだった。

DBにはユーザテーブルを作っておく。(最低IDとパスワード)
そして認証をかけたいディレクトリに.htaccessをおき(httpd.confに書いてもいい)、
mod_auth_pgsql用の定義を書く。

AuthName "My PostgreSQL Authenticator"
AuthType basic
Auth_PG_host localhost
Auth_PG_port 5432
Auth_PG_user postgres
Auth_PG_database www
Auth_PG_pwd_table valid_users
Auth_PG_uid_field user
Auth_PG_pwd_field password
<LIMIT GET POST>
require valid-user
</LIMIT>

まだ試していないが、ログ用のテーブルを作ればログもとれるし、一度認証が通った後にDBアクセスさせたくなければ Auth_PG_cache_passwords を On にすればいいそうだ。
簡単に動いてかなり嬉しかった..

ただ、Basic認証なので(厳密な)ログアウトはできなくて「ブラウザをすべて閉じる」しかないのは欠点。これは仕方ない...

open ssl を組み込み

| コメント(0)

ローカルPCのApacheにopen sslを組み込んだ。
特に問題なく完了した。「PHP5徹底攻略 エキスパート編」の5章を参照した。

open sslはすでにはいっていたため、Apacheの再構築から。

(Apacheソースのディレクトリに移動後)
$make clean
$./configure --enable-so --enable-rewrite --enable-ssl --with-ssl
$make
$su
#make install

この後、サーバ証明書の作成。(本の通りなので略... そのうち必要性が出てきたら書くことにする)

mod_rewriteを使ってSEO対策

| コメント(0)

ファイルが .php だとSEO的によくないらしい。
Apacheのmod_rewriteを使うと、.php も .html でアクセス可能になり、SEO的にいいらしい。

(1)Apacheにmod_rewriteを組み込む。
(Apacheのソースのあるディレクトリに移動後)

$ ./configure --enable-so --enable-rewrite
$ make
$ su
# make install

(2)Apache再起動

(3)対象のディレクトリ下に .htaccess 作成。ここでは www.hoge.com/shop/に割り当てているディレクトリ下。

DirectoryIndex top.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /shop
RewriteRule index.html top.php RewriteRule ^index\.html$ top.php (注)
RewriteRule ^show-([0-9]+).html+ show_data.php?param1=$1
RewriteRule ^show-([0-9]+)-([0-9]+).html+ show_data.php?param1=$1&param2=$2

上記で、
http://www.hoge.com/shop/show_data.php?param1=10

http://www.hoge.com/shop/show-10.html
で、また
http://www.hoge.com/shop/show_data.php?param1=10&param2=99

http://www.hoge.com/shop/show-10-99.html
でアクセス可能になる。
すごくいろいろな書き方ができ、制限もできるようだ。
mod_rewriteでぐぐると山のように情報アリ。
Module mod_rewrite URL Rewriting Engine 正統にマニュアル。。
動的だけど静的なページの作成 (mod_rewrite)

この対策でどれだけ効果があるのかに興味アリ。

(注)2005.9.7 訂正したようにしないと、xxxxxx_index.html のようなURLも対象として引っかかってしまう。