![]() |
|
2007年1月12日 |
|
|
|
SSI でブラウザ別表示やメニュー表示を実現する。 |
|
|
|
ROUTE286 トップ >
2007年 |
|
2 8 6 - ROUTE286 の後継ブログ。 |
|
|
|
今後は 2 8 6 で記事投稿・ブログ公開を行います。 ROUTE286 の新たな記事投稿は行われませんが、修正等は行います。 |
|
SSI でブラウザ別表示やメニュー表示を実現する。 |
|
|
|
Web サイトのコンテンツ構築として多いのは CGI(Perl) や PHP ですね。 企業レベルだと Java サーブレットや ASP もありますが……。 でも実は SSI だけで実現できる事もある事を知らない人も多いかもしれません。 以下の事は SSI だけで実現する事ができます。 ・ブラウザに応じて表示を変える ・表示しているファイルに応じて表示を変える共通メニュー等 Apache 1.2 より SSI では if 文を使う事ができます。 現在サーバとして動作している Apache は 1.3 以降なはずなので、 SSI が使える Apache のサーバであれはこの方法は使えるはずです。 まずはブラウザに応じて「ブックマーク・お気に入りに追加」を表示させるとか。 $ を頭につけると環境変数、また // で囲むと正規表現ができます。 Perl では =~ としますが、SSI では正規表現でも = です。 ちなみにここを見ている方なら分かると思いますが、 現在見ている環境での HTTP_USER_AGENT は CCBot/1.0 (+http://www.commoncrawl.org/bot.html) となります。google のキャッシュなら googlebot になってるかと……
実際に実行してみると以下の通りです。 これを使えばわざわざブラウザ別にページを用意する必要はないんですね。 また、include に SSI を含んだ HTML を指定した場合、 include された HTML にも SSI を動作させる事ができます。 環境変数は CGI・PHP 等と同様に得られますので、 例えば共通メニュー menu.shtml を用意します。 以下は index.shtml がトップ、info.shtml がお知らせで 表示しているページを強調、そうでないところはリンクにします。
ディレクトリをまたぐ場合は DOCUMENT_URI で処理すると良いですね。 もちろん正規表現も可能です。 この menu.shtml を各ページから include で読めばいいわけです。
ディレクトリがある場合は include virtual の方が良いですね。 この ROUTE286 も表示部分はほとんど SSI を用いています。 多くの blog は Perl・PHP、あとは Ruby あたりかと思います。 さすがにコメント等の書き込みや検索は他の言語でないといけませんが、 やる気になればここまでできますよ〜という感じで。^^;;; Apache 単独で処理されるので、 他の言語よりダントツに高速で処理されるわけです。^^v サーバ負荷も軽減されますよ。 |
|
|
|
書込 - 07/01/12 15:58
カテゴリ -
ウシの声(インターネット) |
固定リンク -
トラックバック・コメント ( 0 ) |
|
Presented by ROUTE286.
ROUTE286 トップ
お問い合わせ |