UNIX的なアレ:gihyo.jp出張所
第13回 知っておきたいApacheの基礎知識 その9
今回は,
自分が使っているWebサービスのURLを気にしたことがありますか?
Webサービスで使うURLは静的なページのようにすっきりとさせているケースが多いですね。実際はQueryStringでパラメータを渡して,
今回はURLの書き換えをするときに活用ができる,
mod_ rewriteでできること
mod_
また,
それでは,
- 書き換え前
http://example. com/ foo - 書き換え後
http://example. com/ index. php?username=foo
さて,
このように,
mod_ rewriteを追加する
まず,
$ cd ${APACHE_SRC_DIRECTORY}/modules/mappers
$ sudo /usr/local/apache2/bin/apxs -a -i -c mod_rewrite.c
$ ls /usr/local/apache2/modules/mod_rewrite.so
/usr/local/apache2/modules/mod_rewrite.so
最後にmod_
mode_ rewriteを使ってURLを書き換える
それでは実際にmod_
- 書き換え前
http://example. com/ index. html - 書き換え後
http://example. com/ foo/ bar/ sample. html
それでは,
下記の例を参考にしてください。
<VirtualHost *:80>
DocumentRoot /usr/local/apache2/vhosts/www.example.com/htdocs
ServerName www.example.com
ErrorLog /usr/local/apache2/vhosts/www.example.com/logs/error_log
CustomLog /usr/local/apache2/vhosts/www.example.com/logs/access_log common
RewriteEngine on
RewriteLogLevel 9
RewriteLog /tmp/rewrite.log
RewriteRule /index.html /foo/bar/sample.html
</VirtualHost>
それでは上記の設定が追加できたら,
http://
それは,
$ sudo mkdir -p /usr/local/apache2/vhosts/www.example.com/htdocs/foo/bar/
$ echo "Rewrite Success" | sudo tee /usr/local/apache2/vhosts/www.example.com/htdocs/foo/bar/sample.html
上記のコマンドを実行したら,
Rewrite Success
と表示されれば成功です。Rewriteではこのように,
[TIPS] Perlワンライナーを使ってログを集計してみよう
Apacheのログは非常に貴重なデータで,
しかしながら,
$ perl -e 'open($fh,"./access_log"); while(<$fh>){if($_ =~ /^([0-9.]+)/){$log{$1}+=1}} ; foreach $line (sort keys %log){ print "$log{$line} \t $line \n" } ; close ($fh)'
ただし,
最後に
さて,
UNIX, Apache, URL, mod_rewrite