今回は、
自分が使っている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)'
ただし、
最後に
さて、