はてなや2chはhttp://www.hatena.ne.jp/xxxxxxx
という具合に各ページごとドメインの後にランダムな数字の羅列がありますが、
システム内部では、このランダムな数字はディレクトリになっているのでしょうか?
はてなや2chのようなたくさんのスレッドが作成できるようなサイトを作成しようと考えているのですが、
各ページは検索エンジンの検索にHITするように作成したいと考えています。
この場合、どういう構築方法が理想的かお教えください。
ブラウザで ”
” へアクセスすると、
そのブラウザは ”www.hatena.ne.jp” に接続し、”GET /xxxxxxx HTTP/1.0” というような
リクエストを送信するはずです。なので、サーバー側で ”/xxxxxxx” へのアクセスを
”/cgi-bin/bbs.cgi?thread=xxxxxxx” というようなアクセスとして処理すれば
実現できるのではないかと思います。
実際に試したわけではないのですが、ご参考までに・・・
サイト制作者ではないので確実な保証は出来ませんが、ディレクトリの構成ではないと思います(ディレクトリ構成だとしたらとても非効率だと思います)
ランダムな数字というより、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で作成されていますが参考にはなると思います)
後者のFancy URLモードは参考になりそうです。ありがとうございます。
IIS+ASPで実現したいのですが、参考になるサイトがあれば引き続きお願いいたします。
リダイレクトではなくて、あくまでもサーバー側の処理です
サーバープログラムが 先ほどの例では bbs.cgi を呼び出し、
その結果を、あたかも ”/xxxxxxx” というディレクトリがあるかのように送り返します
こういう設定やプラグインがない場合は多少のプログラミングが必要かも知れません
サーチエンジンに関しては、上記の方法を用いれば、どこかにリンクを張っておけば
ロボットがそれを見て勝手に登録してくれるのではないかと思います
なるほど。そういうことでしたか。ありがとうございます。
http://japache.infoscience.co.jp/rewriteguide/
Apache URL Rewriting Guide
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のような動作をするとのこと。
mod_rewriteの場合、URLが切り替わってしまいますよね?アクセス側のURLはhttp://domain/xxxのままである必要があるのですが、この3番目のISAPIはこのあたりはどうなのでしょう?
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の部分をパラメータとすることができます。
検索してみると、いろいろなページが見つかりますので、いくつか見てみてください。
ありがとうございます。みてみます。
MSの製品ですが恐ろしく簡単にサイトやスレッドを
増やせます。Windows Server 2003 + SQL Serverを導入すれば
タダで導入できるのも利点です
もしイントラでお使いのようでしたら
楽でいいかもしれません
構築の原理は
このサイト管理はファイルの実態がありません
データはずべてデータベースに格納されています
こちらは上位に位置するもっと機能がありカスタマイズが出来る製品です
ありがとうございます。みてみます。
http://perl.misty.ne.jp/function02/time.html
ミスティーネットレンタルサーバー − MISTY-NET − Perl・CGI講座 関数検索 >> time
2chもはてなも、数字の羅列の部分はランダムな数値ではなくって、timeという関数によって得られる値で、グリニッジ標準時1970年1月1日0時0分0秒からの経過秒数を示しています。
システム内部では、この数値はディレクトリとして構成されているわけではありません。
http://www.net-newbie.com/trans/mod_rewrite.html
Apache module mod_rewrite
はてなの場合は、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.org
はてなダイアリーでも利用されている tDiary は Last-Modified に対応しています。
みなさん、ありがとうございました。
アクセス後のURLはhttp://www.hatena.ne.jp/xxxxxxxのままなので、リダイレクトはしていないのかな?と思っています。いかがでしょうか?フレームも使ってないようですし。