mod_rewriteを用いて動的URLを静的URLに変換する

静的URLでアクセスし、GETパラメータを渡す方法のメモ。

具体例を挙げると

http://www.hoge.com/item/(****)/

http://www.hoge.com/item.html?id=(****)

という風に変換する場合について記述する。
ここでは(****)は数字のみという前提で話を進める。
もちろん、数字以外でも応用可能だが正規表現の話になるのではここでは割愛。

方法は以下の2種類
[1]httpd.confに直接記述した後にApacheをリロード(または再起動)
[2].htaccessに記述

どちらも記載する内容は以下の通り

RewriteEngine on
RewriteRule ^item/([0-9]+)/$ item.html?id=$1 [L]

この2行でOK。

mod_rewriteでエラーが出る場合、以下の点をチェックしてみると解決できるかも。カモ肉おいしいよね。

[1]Apacheにmod_rewriteが読み込まれていない
→httpd.conf内を「mod_rewrite」で検索してみるのが最も手っ取り早い。

[2]httpd.confに直接書いてから、Apacheをリロードしていない
→とりあえずApacheをリロード。

[3]Options ディレクティブにFollowSymLinksが記載されていない
→.htaccessで処理する人にはありがちかと。というか自分がまさにこれを忘れがち。

大阪の江坂でウェブ制作をしている、インフラもシステムもデザインもディレクションもできるエンジニア。 広く浅く薄っぺらくですが(笑)

Leave a reply:

Your email address will not be published.