はてなや2chのシステムの仕組み。

はてなや2chはhttp://www.hatena.ne.jp/xxxxxxx
という具合に各ページごとドメインの後にランダムな数字の羅列がありますが、
システム内部では、このランダムな数字はディレクトリになっているのでしょうか?
はてなや2chのようなたくさんのスレッドが作成できるようなサイトを作成しようと考えているのですが、
各ページは検索エンジンの検索にHITするように作成したいと考えています。
この場合、どういう構築方法が理想的かお教えください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/08/09 13:12:23
  • 終了:--

回答(7件)

id:a62143 No.1

a62143回答回数8ベストアンサー獲得回数02004/08/09 13:29:24

ポイント10pt

ブラウザで ”

” へアクセスすると、

そのブラウザは ”www.hatena.ne.jp” に接続し、”GET /xxxxxxx HTTP/1.0” というような

リクエストを送信するはずです。なので、サーバー側で ”/xxxxxxx” へのアクセスを

”/cgi-bin/bbs.cgi?thread=xxxxxxx” というようなアクセスとして処理すれば

実現できるのではないかと思います。

実際に試したわけではないのですが、ご参考までに・・・

id:salvatore

アクセス後のURLはhttp://www.hatena.ne.jp/xxxxxxxのままなので、リダイレクトはしていないのかな?と思っています。いかがでしょうか?フレームも使ってないようですし。

2004/08/09 14:32:33
id:ke-zi No.2

ke-zi回答回数95ベストアンサー獲得回数02004/08/09 14:01:14

ポイント15pt

サイト制作者ではないので確実な保証は出来ませんが、ディレクトリの構成ではないと思います(ディレクトリ構成だとしたらとても非効率だと思います)

ランダムな数字というより、UNIXタイムスタンプ等、何かしらの規則はあると思います。そうでないと数値がだぶってしまう可能性があるので。

構築方法としては非常に勝手な意見ではありますが、ディレクトリ構成ではなく、DBの構成で、2chであれば各スレッド毎にIDのカラムを用意しておき、IDには作成された日時のUNIXタイムスタンプが入る。万が一全く同じ時刻にDBにINSERTされるスレッドが2つあった場合には後者の時刻を1秒後にしたタイムスタンプで記録させておき、スレッドにアクセスする際にはタイムスタンプのIDをキーにしてデータを取得すれば大規模的な掲示板等の作成は容易かと思います。

http://japan.nucleuscms.org/documentation/tips.html

Nucleus - 便利な使い方ヒントの紹介

検索エンジンにヒットするコツとしては、URL内に「?」を使わないのが良いらしいです。PHPで作成された、NucluesというBlogツールで、Fancy URLモードというのがあるのですが、そのモードを使うと、はてなのように、スラッシュの後に数値や文字列だけの記述でアクセス出来るようになります。

Fancy URLモードの内部構造についてはソースを見て頂くのが宜しいかと思います。(PHPで作成されていますが参考にはなると思います)

id:salvatore

後者のFancy URLモードは参考になりそうです。ありがとうございます。

IIS+ASPで実現したいのですが、参考になるサイトがあれば引き続きお願いいたします。

2004/08/09 14:38:21
id:a62143 No.3

a62143回答回数8ベストアンサー獲得回数02004/08/09 14:53:51

ポイント10pt

リダイレクトではなくて、あくまでもサーバー側の処理です

サーバープログラムが 先ほどの例では bbs.cgi を呼び出し、

その結果を、あたかも ”/xxxxxxx” というディレクトリがあるかのように送り返します

こういう設定やプラグインがない場合は多少のプログラミングが必要かも知れません

サーチエンジンに関しては、上記の方法を用いれば、どこかにリンクを張っておけば

ロボットがそれを見て勝手に登録してくれるのではないかと思います

id:salvatore

なるほど。そういうことでしたか。ありがとうございます。

2004/08/09 15:05:38
id:ransamu No.4

ransamu回答回数138ベストアンサー獲得回数72004/08/09 15:08:35

ポイント15pt

Apache だと、mod_rewriteを使ってアドレスを書き換えるのが一般的かと。

http://www.higuchi.com/item/21/catid/28

検索エンジンとの付き合い方 [mod_rewriteの術] - higuchi.com blog

http://kinshachi.ddo.jp/kurage/html/MT/comp/archives/000329.html

ISAPI_Rewrite - コンピュータ系blog

IIS向けには、ISAPI_Rewrite というものがあるようです。Apacheのmod_rewriteのような動作をするとのこと。

id:salvatore

mod_rewriteの場合、URLが切り替わってしまいますよね?アクセス側のURLはhttp://domain/xxxのままである必要があるのですが、この3番目のISAPIはこのあたりはどうなのでしょう?

2004/08/09 15:44:05
id:kn1967 No.5

kn1967回答回数2915ベストアンサー獲得回数3012004/08/09 17:24:25

ポイント15pt

http://ash.jp/java/linux_tomcat.htm

サーブレット環境構築(Linux+Tomcat4.0+mod_webapp)

特定のアドレスへのアクセスをサーバー内部の別ソフト(参考URLではTomcatというサーバーサイドJAVAを動かすためのソフト)に飛ばしています。

別ソフトに処理を飛ばす際に、例えば

http://www.hatena.ne.jp/1092024743

はてなや2chのシステムの仕組み。 はてなや2chはhttp://www.hatena.ne.jp/xxxxxxx という具合に各ページごとドメインの後にランダムな数字の羅列がありますが、 システム内.. - 人力検索はてな

 の 1092024743の部分をパラメータとすることができます。

検索してみると、いろいろなページが見つかりますので、いくつか見てみてください。

id:salvatore

ありがとうございます。みてみます。

2004/08/10 13:34:17
id:upride No.6

upride回答回数220ベストアンサー獲得回数12004/08/09 19:29:12

ポイント15pt

MSの製品ですが恐ろしく簡単にサイトやスレッドを

増やせます。Windows Server 2003 + SQL Serverを導入すれば

タダで導入できるのも利点です

もしイントラでお使いのようでしたら

楽でいいかもしれません

構築の原理は

このサイト管理はファイルの実態がありません

データはずべてデータベースに格納されています

こちらは上位に位置するもっと機能がありカスタマイズが出来る製品です

id:salvatore

ありがとうございます。みてみます。

2004/08/10 13:35:11
id:pmakino No.7

まきのっぴ回答回数355ベストアンサー獲得回数282004/08/09 23:20:50

ポイント20pt

http://perl.misty.ne.jp/function02/time.html

ミスティーネットレンタルサーバー − MISTY-NET − Perl・CGI講座 関数検索 >> time

2chもはてなも、数字の羅列の部分はランダムな数値ではなくって、timeという関数によって得られる値で、グリニッジ標準時1970年1月1日0時0分0秒からの経過秒数を示しています。

システム内部では、この数値はディレクトリとして構成されているわけではありません。

はてなの場合は、Apache の mod_rewrite という機能を使用して、/XXXXXXXX の部分を内部的に hoge.cgi?key=XXXXXXXX というような形に変換して実行していると思われます。

例えば、mod_rewrite を使用して

RewriteRule (¥d+) hoge.cgi?key=$1

と設定してやれば上記のような変換が実現できます。

http://www.higuchi.com/item/21

検索エンジンとの付き合い方 [mod_rewriteの術] - higuchi.com blog

ちょうど mod_rewrite を使用した SEO について書いているページがあったのでご紹介しておきます。

2chの場合は mod_rewrite のような特別なモジュールを使っているわけではなく、CGI が実行される時にセットされる環境変数 PATH_INFO という物を使用しています。

例えば、

/read.cgi/news/123456789/l50

とURLを指定すると、環境変数 PATH_INFO に /news/123456789/l50 という文字列が格納された状態で read.cgi が実行されます。

あとは、read.cgi の中で $ENV{’PATH_INFO’} を拾って適切に解釈するだけです。

PATH_INFO を用いた SEO について掲載しているページがありました。

また、CGI や PHP 等を用いて自動生成するページを検索エンジンに適切に拾って欲しいなら、以上のような mod_rewrite や PATH_INFO を活用した URL の見せかけのほか、HTTP レスポンスヘッダの Last-Modified や If-Modified-Since にも対応すると良いでしょう。

普通の静的な HTML で書かれたページは、作成者が特に意識しなくてもサーバが勝手に Last-Modified をつけてくれるので問題ないのですが (静的な HTML ファイルを作成する Movable Type で構築されたページがヒットしやすい理由の一つです)、CGI 等によってページを自動生成する場合は、プログラム作成者が意識してつけてやる必要があります。

はてなダイアリーでも利用されている tDiary は Last-Modified に対応しています。

id:salvatore

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

2004/08/10 13:36:47

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

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

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

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

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