アドレスの一部分だけを入力して指定ページに飛ばしたい。

[新着] Webテンプレートを仮オープンしました



0   名前: mmm : 2006/09/03(日) 18:48  ID:.AA7PTft
例えばhttp://×××.com/contents/
という階層の中に
0001/index.html
0002/index.html
0003/index.html




というファイルがあったとします。
トップページに何らかの入力フォームを置いて
「0001」と入力すれば
http://×××.com/contents/0001/index.htmlへ。
「0002」と入力すれば
http://×××.com/contents/0001/index.htmlへと
数字のみの入力で直接指定ページに飛ばしたいのですが
このような事は可能なのでしょうか?
また可能な場合、どのようにすれば良いのでしょうか?
プロンプトがどうの、という話をちらっと聞いただけで方法が全くわかりません。
みなさん、知恵を貸してください。
お願いします。

1   名前: Chip : 2006/09/03(日) 18:48  ID:iXTrKUp6
JavascriptとかCGIとかを使って仕組みを作れば出来るけど、
どっちがいいか(どっちが使えるか)はサイト構築の要件がわからないとなんともいえない。

質問の回答とちょっとすれるけど、こうした仕組みを作ると飛び先は検索エンジンに拾われなくなるって事もちょっと気にしておいて。
(検索はされたくない、とか、仕組みを経由しない普通のリンクも別に存在するのであれば問題ないけど)

2   名前: mmm : 2006/09/03(日) 18:48  ID:.AA7PTft
早速のご返答ありがとうございます。
今回の件はサブ的な検索としての要素が強いので検索エンジンは無視しても問題ありません。
(普通のリンクが既にありますので)

Javascript、CGIどちらでも構わないのですが、テストが楽だという事でJavaで出来ればと思っています。
HPの概要としては
1.商品を紹介するHP
2.商品一つ一つの紹介ページのアドレスが
......./0001/index.html
.
.
である
3.HP内での商品紹介のページ(リンク)は別にある
4.その商品を紹介する別媒体があり、商品番号が付いている
5.その商品番号が......./0001/index.htmlの「0001」である
6.別媒体を見たユーザーがトップページから直接商品番号を入力する事により
  その商品の詳細紹介ページを見れるようにしたい
以上のような感じです。

3   名前: 木目 ◆a20iQ0Y76t : 2006/09/03(日) 18:48  ID:d0FI7sWU
暇なので自分なりに作ってみました。
http://aurasoul.vis.ne.jp/bbs/move.cgi

■CGIの内容

#!/usr/locar/bin/perl

$script = 'move.cgi';
$title = 'URL移動';
$base_url = 'http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view&no=';
$kakuchousi = '';
$jump = 0;

read(STDIN, $formin, $ENV{'CONTENT_LENGTH'});

@indata = split (/&/,$formin);

foreach $tmp (@indata)
{
($name,$value) = split (/=/,$tmp);
$in{$name} = $value;
}

print "Content-type: text/html\n\n";

if ($in{'no'} ne "") {

$jump_url ="<META HTTP-EQUIV=\"Refresh\" CONTENT=\"$jump;URL=$base_url$in{'no'}.html\">";
$jump_url2 ="<a href=\"$base_url$in{'no'}$kakuchousi\">$base_url$in{'no'}$kakuchousi</a>にジャンプします。";

}

if ($in{'no'} eq ""){
$form ="<form action=\"$script\" method=\"POST\">
<input type=\"text\" name=\"no\" value=\"2556\">
<input type=\"submit\" name=\"submit\" value=\"移動する\"></form>";
}

print <<"EOM"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
$jump_url
<title>$title</title>
</head><body>
<div>
$jump_url2
$form
</div></body></html>
EOM


4   名前: m035 ◆Wpzr1YKOiq : 2006/09/03(日) 18:48  [URL]  ID:kq3hJApW
<form>
商品番号<input type="text" id="pro_num" size="4" value="0000">へ<input type="button" value="ジャンプ" onclick="location.href='http://×××.com/contents/'+(10000+(this.form['pro_num'].value-0)+'').slice(1)+'\/index.html'">
</form>

JavaScriptを使ったHTMLソースは以上のような感じになります。
(HTMLの場所の指定が無かったので絶対パスにしています)
ですが、商品ページということなら、CGIを使ったほうが結局はいろいろ考えると楽です。

・・・と打っていたら>>3が書き込まれたようなのでそちらを使えば良いですね。

#それと、JavaとJavaScriptは別物ですのでご注意を。

5   名前: mmm : 2006/09/03(日) 18:48  ID:.AA7PTft
木目さん、ありがとうございました。
上記CGIを外部htmlファイルからpostする形にする場合はどのようにすればよろしいのでしょうか?
たびたびすいません。

6   名前: mmm : 2006/09/03(日) 18:48  ID:.AA7PTft
m035さん、ありがとうございます。
実は入力フォームを置きたいページには既に別のCGIを稼動させているので、出来れば使いたく無かったのです。
以前、同一ページに2つのCGIを置いたときに干渉しあって、うまく動かなかった事があり、ややこしい事をして無理やり動かしたので。
早速試してみます。

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

7   名前: 木目 ◆a20iQ0Y76t : 2006/09/03(日) 18:48  ID:d0FI7sWU
<form action="スクリプトのURL" method="POST"><div>
<input type="text" name="no" value="">
<input type="submit" name="submit" value="移動する"></div></form>

をHTMLページの中で使えばOKですよ。

8   名前: mmm : 2006/09/03(日) 18:48  ID:.AA7PTft
木目さん

ありがとうございます。早速試してみます。
たびたびすいませんでした。

m035さん

きちんと動いてくれました。ありがとうございます。
エクスプローラの都合上の問題もありますし
木目さんの作ってくれたCGIと平行してどちらを使うか検討したいと思います。
ありがとうございました。

9   名前: 木目 ◆a20iQ0Y76t : 2006/09/03(日) 18:48  ID:d0FI7sWU
>同一ページに2つのCGIを置いたときに干渉しあって

これはスクリプトとスクリプトを自己流で合体させたということですか?
上記のCGIの場合であれば、HTML表示でフォームを作れるため、問題はないと思います。

HTMLで文法ミスがあったので少し修正です。

http://aurasoul.vis.ne.jp/bbs/move.cgi

■CGIの内容

#!/usr/locar/bin/perl

$script = 'move.cgi';
$title = 'URL移動';
$base_url = 'http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view&no=';
$kakuchousi = '';
$jump = 0;

read(STDIN, $formin, $ENV{'CONTENT_LENGTH'});

@indata = split (/&/,$formin);

foreach $tmp (@indata)
{
($name,$value) = split (/=/,$tmp);
$in{$name} = $value;
}

print "Content-type: text/html\n\n";

if ($in{'no'} ne "") {

$jump_url ="<META HTTP-EQUIV=\"Refresh\" CONTENT=\"$jump;URL=$base_url$in{'no'}.html\">";
$jump_url2 ="<a href=\"$base_url$in{'no'}$kakuchousi\">$base_url$in{'no'}$kakuchousi</a>にジャンプします。";

}

if ($in{'no'} eq ""){
$form ="<form action=\"$script\" method=\"POST\"><div>
<input type=\"text\" name=\"no\" value=\"2556\">
<input type=\"submit\" name=\"submit\" value=\"移動する\"></div></form>";
}

print <<"EOM"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
$jump_url
<title>$title</title>
</head><body>
<div>
$jump_url2
$form
</div></body></html>
EOM

一覧へ戻る