Web Artisan Blog - ウェブ アルチザン ブログ

「#include virtual」・・SSIを仕様したサイト構築(ASPの例)

ASP・VB・Excel (24 items)

2004年06月21日

Research Artisan Pro ←リサーチアルチザンがパワーアップして復活しました!!
・SSI(Server Side Include)を利用した、ASPのサイト構築例

ASPは、JSPやPHPと同様にHTML内にASPコーディング(VB Script)を埋め込む事で、
動的なコンテンツを作成する事が出来る。

サイト構築のコーディング構造としては、
ASPファイルにHTMLタグを埋め込み、
可変(動的に変わる)の部分にASPコーディングを埋め込む事で可能であるが、
サイト全体的には、
各HTML共通の固定部分(ヘッダーやフッター)があるのも多い。

その固定部分を各ASPファイルに持つ事は、後のメンテ的にも非常に賢くない。
そこでSSIを使用し、
処理はASPファイル、画面表示はHTMLファイルで行う事で、
画面上、動的な部分と固定的な部分を別ファイルで持つ事が出来る。

つまりSSIを使用する事で、
動的且つメンテもしやすい、ASPのサイト構築構造が可能となる。
以下に、構造例を記す。
(1)WebサーバーのSSIの設定を確認

SSIを使用する場合、
Webサーバーの設定が”SSIを有効にする”となっているか確認する必要がある。
”無効”の場合は、「<!--#include virtual 〜 」と記述しても、
単にコメントとして解釈される。


(2)includeコマンド

<!--#include file = "test.html"-->
fileオプションは、現在のASPファイルからの相対位置指定。

<!--#include virtual = "/common/common.asp"-->
virtualオプションは、Webサーバーのドキュメントルートからの絶対位置指定。

※includeするのは、html・aspどちらでも可能。

(3)ASPコーディング

基本的にASPファイル内では、処理のみを記述し、HTMLタグなどは埋め込まない。
[1]処理上、共通的な処理がある場合は、
  別ASPファイルに共通関数として持たせる事が出来るが、
  その場合、共通関数ASPファイルの参照宣言を、includeコマンドで行う。
[2]処理を行った後、画面表示自体はHTMLで行う。
  このincludeしたHTMLファイル内でも、ASP変数やASPコーディングを行う事が可能である。

★main.asp

<%
Option Explicit
%>
<!--#include virtual = "/common/common.asp"-->・・・[1]

<%
  〜 各処理 〜
  ・・・・・・
  ・・・・・・

%>
<!--#include virtual = "/html/main.html"-->・・・[2]



★main.html

<html>
<head>
<body>
<%= funcMakeMenu() %>
<table>
<tr>
<td><%= strName %>
  ・・・・・・
  ・・・・・・



※ここで仮に、
ASPファイルがSSLルート配下、HTMLファイルがドキュメントルート配下という具合に、
ASPとHTMLがWebサーバー上、別フォルダにある場合でも、この構造は有効である。
上記で言うと、
main.aspがSSLフォルダ配下で、main.htmlがドキュメントルート配下であっても、
「<!--#include virtual」指定する事で、
main.aspからは、ドキュメントルート配下のmain.htmlファイルが参照できる。


前の記事 次の記事

Comments

名無し wrote:

ASPとHTMLを別のサーバに配置することは可能でしょうか?つまり、ASPが、別のサーバに配置されたHTMLをincludeするということです。
2005年05月31日 13時22分16秒

ossi wrote:

上に書いた方法では、おそらく無理ではないでしょうか。。
2005年06月03日 15時46分17秒

ぐぐったら引っかかったので備忘録がわりに wrote:

可能。IISとServerバージョンによって具体的な設定手順は異なるが、ローカルマシン物理パスで作成した仮想ディレクトリを用いて #includeディレクティブするのと同じように、ネットワーク上の共有を物理パス(コンテンツのパス)に使って、仮想パス(エイリアス)を作成して、aspスクリプトで呼べばよい。
IISで「サイト」(の該当するaspアプリケーション)が配置されているマシンに、初回のinclude文がロードされるタイミングでプリコンパイルされてのメモリ上へロードされる。

workgroup上の共有と、AD上の共有ではIISの時期によってはユーザ認証が異なるらしい。AD・UNC仮想ディレクトリのときは、IISマネージャからGUIで設定できないパススルー認証があるらしいので(win2000)
http://support.microsoft.co...
このあたり。
分散したアプリケーションが配置できなければ、ステージングの実現やメンテナンス中表示が難しくなってしまうので、毎回スクリプト書き換えなんてやってられない。サーバ側に機能があると読みを入れるのが妥当。
2009年09月05日 15時24分09秒

Add Comments

Trackback

トラックバックはありません

Trackback URL

http://www.res-system.com/weblog/action.php?action=plugin&name=TrackBack&tb_id=83