現在yomiサーチのphp版を改造して静的表示の検索サイトを作成しています。

mod_rewriteを使い、
RewriteRule ^kensaku/(.*)_([0-9]+)\.html$ kensaku\?i=$1&page=$2 [L]

静的ファイルへのアクセスで動的ファイルの結果を返す所まではたどりつきました。

教えていただきたいのは、検索ボタンを押した時にすぐに静的ページに飛ぶ方法です。
例えばこちらのサイト様 http://www.su-jine.com/ のように検索後のページを静的に表示したいです。

どうかご指導よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:2006/09/20 00:56:49
  • 終了:2006/09/21 11:04:31

ベストアンサー

id:bewind No.3

bewind回答回数33ベストアンサー獲得回数102006/09/20 18:52:03

ポイント50pt

1番の者です。

すみません、その後いろいろ調べたら、URL の?以降はクエリ文字列として別扱いになるので、RewriteRule での書換えはでき無そうですね。


PHP 版 Yomi-Search の静的表示化ということで調べてみましたら、

Yomi-Search(PHP)のSEO対策 静的表示化

http://blog.sourcefeed.jp/eid/1100103127/

というものがあったようなのですが、サイトを閉鎖されたようですね。

一応こちら

http://web.archive.org/web/20050310044831/blog.sourcefeed.jp/eid...

で当時の情報は確認できるようです。

このような情報は既に参照済みでしょうか。

この改造では、rewrite や redirect などで表示をごまかすのではなく、PHP 内で URL のパスを解析するようですが、改造箇所は多いようですね。


余談ですが、回答受付中のコメントを表示する設定にしていただくと、回答オープンのポイントをご負担いただかなくてもフォローができますので、もしよろしければ設定の変更をお願いします。

http://hatena.g.hatena.ne.jp/hatenaquestion/20060824/1156414553

id:mayo33

bewindさんありがとうございます。

教えていただいたページは参照済みです。

現在htaccessにはRewriteRule ^kensaku/(.*)_([0-9]+)\.html$ kensaku\?i=$1&page=$2 [L]

と記述しています。kensaku/query_1.html とういう感じでurlを入力するとkensaku?i=query&page=1のページが表示されるのですが、検索ボタンを押すことでkensaku?i=query&page=1のページではなくkensaku/query_1.htmlのページを表示したいと思っています。

上で回答下さったb-windさんのリダイレクトかけるという方法かと思うのですが、どのように記述すればよいのかわかりません。 phpではどのように記述すればよいのでしょうか?

追伸

回答オープンの変更教えていただきありがとうございました!



無事思った事ができました!

ありがとうございました^^

2006/09/21 11:04:13

その他の回答(2件)

id:bewind No.1

bewind回答回数33ベストアンサー獲得回数102006/09/20 01:59:13

ポイント10pt

加えて、

RewriteRule ^kensaku\?i=([^&]*)&page=(.*) kensaku/$1_$2.html [R=301,L]

みたいな感じでどうでしょう。

id:mayo33

ご回答ありがとうございました!

教えていただいたように加えてみたのですがうまくいきませんでした。 私もこのやり方でできるように思ったのですが、なにかそれ以前に間違っている箇所があるのでしょうか??

2006/09/20 11:01:01
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402006/09/20 09:04:14

ポイント20pt

form で指定した先の CGI 等で、リダイレクトをかければよいかと。

#!/usr/bin/perl

use strict;
use CGI;
my $q = CGI->new();
my $query = $q->param('query');
print "Location: /kensaku/${query}_0.html\n";

な感じですかね。(テストはしてませんのであくまで動作イメージとして捕らえてください。)

id:mayo33

ご回答ありがとうございました!

すいませんあまりphpはまだ勉強中でして、ありまり詳しくありません。 例えではなかなか理解ができません。 教えていただいたform で指定した先、リダイレクトなどのキーワードを元にネットで調べてみました。

今改造しているプログラムはrequireで他のファイルを読み込んでいるのですが、その後にheader Locationで飛ばすということでよろしいでしょうか? そのときの条件などはどのように記述すればいいのか具体的なご指導よろしくお願いします。

2006/09/20 11:17:07
id:bewind No.3

bewind回答回数33ベストアンサー獲得回数102006/09/20 18:52:03ここでベストアンサー

ポイント50pt

1番の者です。

すみません、その後いろいろ調べたら、URL の?以降はクエリ文字列として別扱いになるので、RewriteRule での書換えはでき無そうですね。


PHP 版 Yomi-Search の静的表示化ということで調べてみましたら、

Yomi-Search(PHP)のSEO対策 静的表示化

http://blog.sourcefeed.jp/eid/1100103127/

というものがあったようなのですが、サイトを閉鎖されたようですね。

一応こちら

http://web.archive.org/web/20050310044831/blog.sourcefeed.jp/eid...

で当時の情報は確認できるようです。

このような情報は既に参照済みでしょうか。

この改造では、rewrite や redirect などで表示をごまかすのではなく、PHP 内で URL のパスを解析するようですが、改造箇所は多いようですね。


余談ですが、回答受付中のコメントを表示する設定にしていただくと、回答オープンのポイントをご負担いただかなくてもフォローができますので、もしよろしければ設定の変更をお願いします。

http://hatena.g.hatena.ne.jp/hatenaquestion/20060824/1156414553

id:mayo33

bewindさんありがとうございます。

教えていただいたページは参照済みです。

現在htaccessにはRewriteRule ^kensaku/(.*)_([0-9]+)\.html$ kensaku\?i=$1&page=$2 [L]

と記述しています。kensaku/query_1.html とういう感じでurlを入力するとkensaku?i=query&page=1のページが表示されるのですが、検索ボタンを押すことでkensaku?i=query&page=1のページではなくkensaku/query_1.htmlのページを表示したいと思っています。

上で回答下さったb-windさんのリダイレクトかけるという方法かと思うのですが、どのように記述すればよいのかわかりません。 phpではどのように記述すればよいのでしょうか?

追伸

回答オープンの変更教えていただきありがとうございました!



無事思った事ができました!

ありがとうございました^^

2006/09/21 11:04:13
  • id:b-wind
    えーと、自分は PHP には詳しくないので、リンクだけになりますが。
    http://oku.edu.mie-u.ac.jp/~okumura/php/redirect.php
    header 関数で行けるようです。

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

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

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

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