まとめ検索のURLって、たとえば[hoge]で検索した場合、

http://www.matome.jp/keyword/hoge
ってなりますよね。
http://www.matome.jp/keyword?q=hoge
なら解るのですが、/hogeはどのようにして動作しているのでしょうか?
誰かご存知の方、よろしくお願いします。
まとめ検索
http://www.matome.jp/

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:federal No.1

回答回数14ベストアンサー獲得回数0

ポイント15pt

.htaccessにてmod_rewriteを使用すればご掲示のサイトと同様の動作をさせることができます。

具体的な記述につきましては個々のサイトによってちがいますので、ご掲示のサイトがどのような設定をしているかはわかりません。


一例として以下のように設定しhttp://example.com/に設置しhttp://example.com/hogeにアクセスすると、

http://example.com/keyword.php?q=hogeと同じ動作をします。

-------------------------------------------------

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ([0-9A-Za-z]+)$ keyword.php?q=$1 [L]

-------------------------------------------------

id:stray_sheep

ありがとうございます。

なるほどー、そういうApacheのモジュールがあるのですね。

調べてみます。

2005/07/18 16:25:23
id:ton-boo No.2

回答回数55ベストアンサー獲得回数5

ポイント15pt

送られてきたURLをサーバ側でどう解釈するかという問題なので、サーバ側の設定次第です。

例えばApacheでは、mod_rewriteというモジュールの設定をすることで、

http://www.matome.jp/keyword/hoge

http://www.matome.jp/keyword?q=hoge

と同等なものだとサーバが解釈してからCGIに処理を渡すような設定ができます。

id:stray_sheep

ありがとうございます。

2005/07/18 16:26:26
id:HackySS No.3

回答回数13ベストアンサー獲得回数0

ポイント100pt

http://mm.apache.jp/pipermail/apache-users/2004-March/003911.htm...

[Apache-Users 3721] Re: GET で動的ページに ? 以外で引数を渡す方法

要するにこう言うことのようです。

http://www.nilab.info/docs/cgi/draft-coar-cgi-v11-03-clean-jp.ht...

Common Gateway Interface - 1.1 *Draft 03* ($BK.Lu(B)

元々の意図としては、CGIスクリプトの設置されているサーバー内のどこかのPathを渡すためのもののようですが。

で、ここがCGIの規格の環境変数の辺り。

id:stray_sheep

ありがとうございます!

perlで確認したところ、確かにPATH_INFOの中に値が入ってました。

規格もじっくり読んでみます。

2005/07/18 16:39:49
id:yoo15x No.4

回答回数150ベストアンサー獲得回数1

ポイント20pt

HTTP 環境変数の『PATH_INFO』というものを利用して実現できます。

アクセスされた URL がどのように変数として分解されるのかはこんな感じです。

こんな風に変更すれば大抵のスクリプトは PATH_INFO 利用での動作が可能になります。

id:stray_sheep

詳しい解説のページを教えていただき、ありがとうございます。

2005/07/18 16:41:37
id:siachan No.5

回答回数91ベストアンサー獲得回数23

ポイント20pt

keywordというファイルがCGIです。環境変数PATH_INFOに/hogeと入っているので、それを元に処理すればOK。


特定のファイルをCGIと認識させるには、.htaccessで


<Files keyword>

SetHandler cgi-script

</Files>


のようにします。


また、/keyword/hoge/?m=detail などとなっていた場合は、?より後はQUERY_STRINGに入ります。

id:stray_sheep

ありがとうございます。

keywordの方にも工夫が必要ですよね。

2005/07/18 16:43:17
id:ito-yu No.6

回答回数323ベストアンサー獲得回数14

ポイント15pt

apacheにはmod_rewriteというモジュールがあり、これはリクエストされたURLを正規表現によってサーバ内部で書き換える機能を提供します(リダイレクトもできます)。

mod_rewriteは、例の場合「keyword/hoge」という文字列を受け取り、たとえばkeyword.php?q=hogeに書き換えて処理しているかもしれません。もっと単純に、index.php?q=keyword/hogeとしているかも?

id:stray_sheep

ありがとうございます。

どうやら、2通りの方法があるようですね。

勉強になりました。

みなさん、ありがとうございました。

2005/07/18 16:44:12

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

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

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

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

回答リクエストを送信したユーザーはいません