Shtml tutorial
Afly | 2006-2-9
What is shtml?
The HTML file extension of SSI (Server Side Include). SSI (Server Side Include) is usually called "server-side embedding" or "server-side inclusion ", is a server-based web page creation technology similar to ASP.
SSI Working principle:
Before sending content to a browser, you can use the server-side include (SSI) command to include text, graphics, or application information to a webpage. For example, you can use SSI to include a time/date stamp, a copyright statement, or a form for the customer to fill in and return. For text or graphics that repeatedly appear in multiple files, using include files is a simple method. You can store the content in an contained file without entering the content into all files. You can use a very simple statement to call the inclusion file, which instructs the Web server to insert content into an appropriate webpage. In addition, when a file is included, all changes to the content can be completed in one place.
Because files containing SSI commands require special processing, the SSI file extension must be assigned to all SSI files. The default extensions are. stm,. shtm, And. shtml.
The Web server processes SSI commands while processing webpages. When the Web server encounters an SSI command, it directly inserts the content containing the file into the HTML webpage. If the "include file" contains the SSI command, insert the file at the same time. In addition to the basic commands used to include files, you can also use the SSI command to insert information about files (such as the file size) or run applications or shell commands.
A common problem with website maintenance is that the website structure is fixed, but a large number of webpages have to be redone to update a little content. SSI provides a simple and effective method to solve this problem. It places the basic structure of a website in several simple HTML files (templates ), in the future, all we need to do is to upload text to the server so that the program can automatically generate webpages according to the template, making it easy to manage large websites.
Therefore, the purpose of pages in shtml format is similar to that of ASP, but it is faster and more efficient because it is an API. It is faster than ASP and slower than HTML. However, because it can be included on the server, therefore, it is easy to update pages (especially batch update banner and copyright). Imagine that you have an HTML section that involves inserting some special server scripts, such as inserting other HTML sections, you choose ASP to complete this task, but if the task is more heavy, need more time, such as 5 S, this time you do not need ASP and use shtml, maybe the processing time is only 4S.
What is SSI used?
The reason we need to talk about SSI is the acronyms of shtml-server-parsed HTML. Contains HTML text containing commands on the embedded server. Before being sent to a browser, the server will completely read, analyze, and modify the shtml document. Shtml is similar to ASP. Some SSI commands are used in files named after shtml, just like ASP commands. You can write ssi commands in the shtml file, when the client accesses these SHTML files, the server will read and interpret these SHTML files and explain the SSI commands contained in The shtml files, for example: you can use the SSI command in the shtml file to reference other HTML files (# include). The files sent by the server to the client are interpreted as shtml without the SSI command. It implements a function not available in HTML, that is, it can implement a dynamic shtml. It can be said that it is an evolution of HTML. Like Sina's news system, the news content is fixed, but the advertisements and menus on it are referenced by # include.
At present, it mainly has the following usage:
Display Server Environment Variables <# echo>
Insert text content directly into the document <# include>
Display Web Document Information <# flastmod # fsize> (such as file creation date/size)
Directly execute various programs on the server <# exec> (for example, CGI or other executable programs)
Set SSI information display format <# config> (for example, file creation date/Size Display Mode)
Advanced SSI <xssi> allows you to set variables to use the if Condition Statement.
Use SSI
SSI is a set of commands provided for Web servers. These commands can be directly embedded in the comments of HTML documents. For example:
<! -- # Include file = "info.htm" -->
It is an SSI command, which serves to bring the content of "info.htm" to the front page. When a visitor visits the page, his htmldocument displays the content of info.htm. The usage of other SSI commands is similar to the previous example. It can be seen that SSI only inserts a little code, and the usage is very simple. Of course, if the web server does not support SSI, it simply uses it as a comment and directly skips the content. The browser also ignores this information.
How can I configure the SSI function on my web server?
On some Web servers (such as IIS 4.0/Sambar 4.2), files containing the # include command must use extensions that have been mapped to the SSI interpreter; otherwise, the web server will not process the SSI command; by default, the extension. STM ,. SHTM and. shtml is mapped to the interpreter (ssinc. DLL ).
Apache depends on your settings. Modify SRM. conf as follows:
Addtype text/X-server-parsed-html. shtml parses only the file with the .shtml extension SSI command
Addtype text/X-server-parsed-html. html parses SSI commands for all HTML documents
The Netscape Web server directly uses the Administration Server to enable the SSI function.
Website uses the mapping label in the server admin program. The content type added with the extension is wwwserver/html-ssi.
The CERN server does not support ssi. You can use the SSI fraud method to download a Perl script from the http://sw.cse.bris.ac.uk/WebTools/fakessi.html so that your CERN server can use some SSI commands. (Exec commands are not supported .)
SSI command basic format
Program code:
<! -- Command name = "Command Parameters">
Example:
<! -- # Include file = "info.htm" -->
Note:
<! --> Indicates the annotation in HTML syntax. This information is ignored when the web server does not support ssi.
# Include is one of the SSI commands.
File is the include parameter, and info.htm is the parameter value. In this command, specify the document name to be included.
Note:
<! -- There is no space between the and #, and only a space exists between the SSI command and the parameter.
The above punctuation = "" cannot be less than one.
The SSI command is case sensitive, so the parameter must be in lower case.
SSI instructions
# Echo demonstration
Purpose: insert environment variables into the page.
Syntax:
<! -- # Echo Var = "variable name" -->
Example:
<! -- # Echo Var = "document_name" --> name of this document
<! -- # Echo Var = "date_local" --> current time
<! -- # Echo Var = "remote_addr" --> your IP address
# Include example
Purpose: insert the content of a text file to the document page.
Syntax:
<! -- # Include file = "file name" -->
<! -- # Include virtual = "file name" -->
The file name is a relative path, which is relative to the directory of the document using the # include command. The contained file can be in the same level directory or its sub-directory, but not in the upper level directory. For example, the nav_head.htm document under the current directory is file = "nav_head.htm ".
The Virtual File name is the complete path of the virtual directory on the web site. For example, if the parameter is relative to the nav_head.htm file in the hoyidirectory under the Server File root directory, it is file = "/hoyi/nav_head.htm"
Parameters:
File specifies the location of the contained file relative to this document
Virtual specifies the location relative to the root directory of the server document
Note:
The file name must have an extension.
The contained file can have any file extension. I think it is most convenient to directly use the HTM extension. Microsoft recommends using the. inc extension (which depends on your hobby ).
Example:
<! -- # Include file = "nav_head.htm" --> Insert the header file to the current page.
<! -- # Include file = "nav_foot.htm" --> Insert the last file to the current page.
# Flastmod and # fsize demonstration
Purpose:
# The Last Update date of the flastmod File
# Fsize file length
Syntax:
<! -- # Flastmod file = "file name" -->
<! -- # Fsize file = "file name" -->
Parameters:
File specifies the position of the file to be included in this document, such as info.txt under the current directory.
Virtual specifies the location relative to the root directory of the server document, as shown in/hoyi/info.txt
Note: The file name must have an extension.
Example:
<! -- # Flastmod file = "news.htm" --> Insert the latest update date of the news.htm file in the current directory to the current page.
<! -- # Fsize file = "news.htm" --> enter the news.htm file size in the current directory to the current page.
# Exec demonstration
Purpose: insert the output of an external program to the page. The input of a CGI program or a general application can be inserted, depending on whether the parameter is cmd or CGI.
Syntax:
<! -- # Exec cmd = "file name" -->
<! -- # Exec CGI = "file name" -->
Parameters:
CMD common application
CGI script program
Example:
<! -- # Exec cmd = "cat/etc/passwd" --> the password file is displayed.
<! -- # Exec cmd = "DIR/B" --> the file list in the current directory is displayed.
<! -- # Exec CGI = "/cgi-bin/GB. cgi" --> the CGI program GB. cgi is executed.
<! -- # Exec CGI = "/cgi-bin/access_log.cgi" --> the CGI program access_log.cgi is executed.
Note: As shown in the preceding example, this command is quite convenient, but there are also security problems.
Method prohibited:
Apache: Delete the "options except des execcgi" line of code in access. conf;
To disable the # EXEC command in IIS, modify the ssiexecdisable metadatabase;
# Config
Purpose: Specify the error message, date, and file size returned to the client browser.
Syntax:
<! -- # Config errmsg = "custom error message" -->
<! -- # Config sizefmt = "display unit" -->
<! -- # Config timefmt = "display format" -->
Parameters:
Errmsg custom SSI execution error message, which can be any method you like.
Display Mode of sizefmt file size. The default mode is byte mode ("bytes"), which can be changed to kilobytes ("abbrev ")
Timefmt time display mode, the most flexible configuration attributes.
Example: display the size of a non-existing file
<! -- # Config errmsg = "server execution error, please contact the Administrator yiho@126.com, thank you! "-->
<! -- # Fsize file = "nonexistent file .htm" -->
Display file size in kilobytes
Syntax:
<! -- # Config sizefmt = "abbrev" -->
<! -- # Fsizefile = "news.htm" -->
Display time in a specific time format
<! -- # Config timefmt = "% Y year/% m month % d day week % W Beijing time % H: % m: % s, % Y years passed % J days today is % u week of % Y years "-->
<! -- # Echo Var = "date_local" --> display the day of the week, month, and Time Zone
<! -- # Config timefmt = "today % A, % B, server time zone is % Z, yes" -->
<! -- # Echo Var = "date_local" -->
Xssi
Xssi (Extended SSI) is a set of advanced SSI commands built into the mod-include module of Apache 1.2 or later. The available Commands include:
# Printenv
# Set
# If
# Printenv
Purpose: Display All environment variables currently in the web server environment.
Syntax:
<! -- # Printenv -->
# Set
Function: assign a value to the variable to be used in the later if statement.
Syntax:
<! -- # Set Var = "variable name" value = "variable value" -->
Example:
<! -- # Set Var = "color" value = "red" -->
# If
Purpose: Create a page that can change the data. The data is displayed according to the requirements calculated when the if statement is used.
Syntax:
<! -- # If expr = "$ variable name = \" variable value A \ "" -->
Display content
<! -- # Elif expr = "$ variable name = \" variable value B \ "" -->
Display content
<! -- # Else -->
Display content
<! -- # Endif "-->
Example:
<! -- # If expr = "$ SERVER_NAME = \" hoyi.zb169.net \ "-->
Welcome to the substation http://hoyi.zb169.net of easy CGI factory at Yunbo hotline.
<! -- # Elif expr = "$ SERVER_NAME = \" linux.cqi.com.cn \ "" -->
Welcome to easy CGI factory substation http://linux.cqi.com.cn in Sun City /~ Hoyi.
<! -- # Else -->
Welcome to the easy CGI factory!
<! -- # Endif "-->
Note: It is used for the backslash in the preceding command to replace internal quotation marks so that they are not interpreted as an end expression. It cannot be omitted.
1. config command
The Config command is mainly used to modify the default settings of SSI. Where:
Errmsg: sets the default error message. To return user-defined error messages normally, the errmsg parameter in the HTML file must be placed before other SSI commands; otherwise, the client can only display default error messages, instead of user-defined information.
<! -- # Config errmsg = "error! Please email webmaster@mydomain.com "-->
Timefmt: defines the format of the date and time. The timefmt parameter must be used before the echo command.
<! -- # Config timefmt = "% A, % B % d, % Y" -->
<! -- # Echo Var = "last_modified" -->
The result is as follows:
Wednesday, 10000l 12,200 0
Maybe the user is unfamiliar with % A % B % d in the previous example. Below we will summarize some of the commonly used Date and Time formats in SSI in the form of a table.
Sizefmt: determines whether the file size is expressed in bytes, kilobytes, or megabytes. In bytes, the parameter value is "bytes". You can use the abbreviations for kilobytes and megabytes. Similarly, the sizefmt parameter must be placed before the fsize command.
<! -- # Config sizefmt = "bytes" -->
<! -- # Fsize file = "index.html" -->
2. include command
The include command can insert text or images from other documents into the currently parsed documents, which is the key to the entire ssi. By using the include command, you only need to change one file to instantly update the entire site!
The include command has two different parameters:
Virtual: the virtual path to a document on the server.
File: Specifies the relative path to the current directory. "../" cannot be used or an absolute path.
<! -- # Include virtual = "/Includes/header.html" -->
<! -- # Include file = "header.html" --> in this case, each directory contains a header.html file.
3. Echo command
The echo command displays the following environment variables:
Document_name: displays the name of the current document.
Document_uri: displays the virtual path of the current document. For example:
<! -- # Echo Var = "document_name" -->
<! -- # Echo Var = "document_uri" -->
With the continuous development of websites, those longer and longer URLs will be a headache. If SSI is used, everything will be solved. Because we can combine the website domain name with the SSI command to display the complete URL, that is:
Http: // yourdomain <! -- # Echo Var = "document_uri" -->
Query_string_unescaped: displays unescaped query strings sent by the client. All special characters are preceded by the Escape Character "\". For example:
<! -- # Echo Var = "query_string_unescaped" -->
Date_local: displays the date and time when the server sets the time zone. You can combine the timefmt parameter of the config command to customize the output information. For example:
<! -- # Config timefmt = "% A, the % d of % B, in the year % Y" -->
<! -- # Echo Var = "date_local" -->
The result is as follows:
Saturday, the 15 of each l, in the year 2000
Date_gmt: similar to date_local, but returns a date based on Greenwich Mean Time. For example:
<! -- # Echo Var = "date_gmt" -->
Last_modified: displays the Last Update Time of the current document. Similarly, this is a very practical feature of SSI. You only need to add the following simple lines of text to the HTML document to dynamically display the Update Time on the page.
<! -- # Echo Var = "last_modified" -->
CGI Environment Variable
In addition to SSI environment variables, the echo command can also display the following CGI Environment variables:
Server_software: displays the name and version of the server software. For example:
<! -- # Echo Var = "server_software" -->
SERVER_NAME: displays the host name, DNS alias, or IP address of the server. For example:
<! -- # Echo Var = "SERVER_NAME" -->
Server_protocol: displays the protocol name and version used by the client request, such as HTTP/1.0. For example:
<! -- # Echo Var = "server_protocol" -->
Server_port: display the server's response port. For example:
<! -- # Echo Var = "server_port" -->
Request_method: display the client's document request methods, including get, Head, and post. For example:
<! -- # Echo Var = "request_method" -->
Remote_host: the name of the client host that sends the request information.
<! -- # Echo Var = "remote_host" -->
Remote_addr: displays the IP address of the client sending the request.
<! -- # Echo Var = "remote_addr" -->
Auth_type: shows the authentication method for user identity.
<! -- # Echo Var = "auth_type" -->
Remote_user: displays the account name used by the user accessing the protected page.
<! -- # Echo Var = "remote_user" -->
4. fsize: displays the size of the specified file. You can customize the output format based on the sizefmt parameter of the config command.
<! -- # Fsize file = "index_working.html" -->
5. flastmod: display the last modification date of the specified file. You can control the output format using the timefmt parameter of the config command.
<! -- # Config timefmt = "% A, the % d of % B, in the year % Y" -->
<! -- # Flastmod file = "file.html" -->
Here, we can use the flastmod parameter to display the update dates of all links on a page. The method is as follows:
<! -- # Config timefmt = "% B % d, % Y" -->
<A href = "/directory/file.html"> file </a>
<! -- # Flastmod virtual = "/directory/file.html" -->
<A href = "/another_directory/another_file.html"> another file </a>
<! -- # Flastmod virtual = "/another_directory/another_file.html" -->
The result is as follows:
File Transfer l 19,200 0
Another file January 08,200 0
6. Exec
The exec command can execute CGI scripts or shell commands. The usage is as follows:
CMD: run the specified string using/bin/sh. If SSI uses the IncludesNOEXEC option, the command will be blocked.
CGI: it can be used to execute CGI scripts. For example, in the following example, the counter. pl script under the cgi-bin directory on the server is used to place a counter on each page:
<! -- # Exec CGI = "/cgi-bin/counter. pl" -->
Differences between shtml and HTML
Let's take a look at the differences between shtml and HTML. If we use one sentence to explain that shtml is not HTML but a Server API, shtml is the server's dynamic HTML.
Both are in hypertext format, but shtml is a file used for SSI technology. That is, the server side include -- SSI server contains commands. If the Web server has the SSI function, most (especially UNIX-based) Web servers, such as Netscape Enterprise Server, support SSI commands.