CGIを静的見せる方法ですが、

例えば
http://www.abc.com/date.cgi?mode=syousai&NO=0000

http://www.abc.com/shop.cgi?NO=0000
といったURIに対して

.htaccess
での記載をどのようにしたらいいのでしょうか?
色々調べてみましたがよく分かりません。
よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2008/01/24 10:56:19
  • 終了:2008/01/31 11:00:03

回答(3件)

id:hidering No.1

hidering回答回数59ベストアンサー獲得回数32008/01/24 11:24:56

ポイント27pt

www.abc.com/date.cgi?mode=syousai&NO=0000

www.abc.com/date/syousai/0000

として表示させる方法です。

これはSEO対策で用いられる方法ですが、お役に立てれば幸いです。

http://2php.jp/seo/

http://www.abe-tatsuya.com/web_prog/htaccess/

id:kazuhiko11

恐れ入りますが上記記載のURIに対して具体的に記述するソース自体を教えていただければ幸いです。

2008/01/24 13:33:57
id:tezcello No.2

tezcello回答回数459ベストアンサー獲得回数692008/01/24 14:02:06

ポイント27pt

http://www.abc.com/

でアクセスされるディレクトリに、以下の内容の .htaccess を置いておくと

RewriteEngine On

RewriteRule date/(.+)/(.+) date.cgi?mode=$1&NO=$2 [L]
RewriteRule shop/(.+) shop.cgi?NO=$1

http://www.abc.com/date/syousai/0000 のアクセスが http://www.abc.com/date.cgi?mode=syousai&NO=0000

http://www.abc.com/shop/0000 のアクセスが http://www.abc.com/shop.cgi?NO=0000

それぞれ置き換えられます。


他のCGIへの書き換えを一気にやってしまう事もできますが、アクセスする際の並び順とクエリとの関連が共通化できるなら可能です。

(例えば、date/0000/syousai というアクセスでよければ

RewriteRule ^([^/]+)/([^/]+)(/(.+))? $1.cgi?NO=$2&mode=$4 [L]

と2行を1行にする事もできます。

http://www.abc.com/hoge/0000 のアクセスも http://www.abc.com/hoge.cgi?NO=0000&mode= に書き換えられるのと、

 mode= の部分を省略できないので、CGIへは mode="" の状態で渡されてしまいますが)


http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

id:hidering No.3

hidering回答回数59ベストアンサー獲得回数32008/01/24 15:06:19

ポイント26pt

自前のアパッチを利用している環境ならばこちらの設定だけで済むと思います。

http://fstyle.ddo.jp/archives/2005/11/rewriterule.html

私が先ほど提示した方法は、残念ながら.htaccessの設定だけでは解決できません。

こちらも先ほどと同じ手法の解説です。

http://plaza.rakuten.co.jp/pgmemo/diary/200511100000/

以下の2つのステップで設定、及びプログラムを変更します。

>htmlを隠す場合(.htmlという拡張子を表示しないでディレクトリに見せかけてアクセスできる様にする場合)は。。。

にあるように.htaccessに次の2行を加えます。

AcceptPathInfo on

Options MultiViews

こうすることで

www.abc.com/date.cgi

www.abc.com/date

で実行されるようになります。

次にcgiにパラメータが渡せるようにするため

>クエリー(?key=value...)ではなく、PATH INFO(PATH_INFO)を使って動的ページを作成する

にあるように、プログラムを修正しなければなりません。

PATH INFO(PATH_INFO)で受け渡しが可能になるよう

例えば、テキストボックスやオプションボタンの内容を送りたい場合はその内容を

/で区切った文字列を/dateの後ろに付加し、

www.abc.com/date/(テキストボックス1の内容)/(オプションボタンの状態)

www.abc.com/date/aiueo/1

(テキストボックス1の内容:"aiueo"、オプションボタンの状態:例えば、checkなら"1"そうでないなら"0")

というふうにしてdate.cgiを呼び出すようにします。

以下はjavascripを利用して柔軟な呼び出しに対応する方法です。

http://www.groo-web.com/js_1_5.html

http://f32.aaa.livedoor.jp/~azusa/print.php?t=js&p=sendform


あとはdate.cgi内で以下のようにしてパラメータを受け取ります。

>foobar.com/test.html/tamakichi/hiropon/Omuraとある場合、$_SERVER['PATH_INFO']には

>【/tamakichi/hiropon/Omura】が格納されます。

>それぞれの値を取得する際には以下の様にします。

>list($null,$tamakichi,$hiropon,$Omura) = preg_split("/\//",$_SERVER['PATH_INFO']);

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません