モンスターカレンダー

« 2005年8月 »
12345678910111213141516171819202122232425262728293031

2005年8月アーカイブ

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も対象として引っかかってしまう。

ふと試してみるとCreateTablesでViewのスキーマも生成できるようになっていた。(DB_DataObject1.7.13)

(設定ファイル)
build_views = 1

しかし、今まで動いていたところがエラーになった。「$obj->key($id)が必要だ」とかなんとか。
調べてみると、手でスキーマを書いていたときに定義していたキーの部分が消えてしまっていた。
→Autoで作成されるところ以外にキー定義を改めて書いた。

(Target_view.php)
function keys() {
return array('item_no');
}

※DataObject/targetdb.iniの[target_view__keys]にも定義できるが、iniファイルはCreateTablesで自動生成され、手書き部分は消えてしまう(と思う)ので使用しない。

以下を使用させていただくことにした。

バックアップスクリプト

実行すると...PerlのDate-Calcモジュールがない!と言われてしまった。。。
勢いで初Perlインストール。

(1)/etc/ntp.conf へNTPサーバを設定する。
(例)
server ntp2.jst.mfeed.ad.jp

(2)以下を実行。
#service ntpd start
#chkconfig ntpd on

(3)確認。
# chkconfig --list |grep ntp
ntpd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ

■以下のスクリプトを作成し、cron.daily下に置く。
・DBをVACUUM後、圧縮してバックアップをとる。下記ではtargetdbというDBを対象としている。
・ある日にちより以前のバックアップファイルを消去する。下記では2日より前。

#!/bin/sh
TDAY=$(date +%Y%m%d)
PATH="$PATH":/usr/local/pgsql/bin
LOG=/bkup/logs/bkup.log

echo "dbbkup start." `date` >>$LOG
find /bkup/ -type f -mtime +2 | /usr/bin/xargs /bin/rm -f >>$LOG
su postgres -c "vacuumdb targetdb" >>$LOG 2>>$LOG
su postgres -c "pg_dump targetdb | gzip > /bkup/db_$TDAY.backup.gz" 2>>$LOG
echo "dbbkup end." `date` >>$LOG

※$LOGにメッセージを出力する処理はエラーが出てなんだかうまくいってません(笑 実力不足です。。