CSS Zen Garden
CSS Zen Garden
CSS设计者们休憩领地~
子网掩码 (subnet mask)又叫网络掩码, 地址掩码, 子网络遮罩, 它是一种用来指明一个 IP 地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码. 子网掩码不能单独存在, 它必须结合 IP 地址一起使用. 子网掩码只有一个作用, 就是将某个 IP 地址划分成网络地址和主机地址两部分.
想理解什么是子网掩码, 就不能不了解 IP 地址的构成. 互联网是由许多小型网络构成的, 每个网络上都有许多主机, 这样便构成了一个有层次的结构. IP 地址在设计时就考虑到地址分配的层次特点, 将每个 IP 地址都分割成网络号和主机号两部分, 以便于 IP 地址的寻址操作.
IP 地址的网络号和主机号各是多少位呢?如果不指定, 就不知道哪些位是网络号, 哪些是主机号, 这就需要通过子网掩码来实现.
子网掩码的设定必须遵循一定的规则. 与 IP 地址相同, 子网掩码的长度也是 32 位, 左边是网络位, 用二进制数字 1表示; 右边是主机位, 用二进制数字 0 表示. 只有通过子网掩码, 才能表明一台主机所在的子网与其他子网的关系, 使网络正常工作.
子网掩码的术语是扩展的网络前缀码不是一个地址, 但是可以确定一个网络层地址哪一部分是网络号, 哪一部分是主机号, 1 的部分代表网络号, 掩码为 0 的部分代表主机号. 子网掩码的作用就是获取主机 IP 的网络地址信息, 用于区别主机通信不同情况, 由此选择不同路由. 其中:
使用子网是要解决只有一组 (A, B, C类) 地址但需要数个网络编码 (网络号) 的问题, 并不是解决 IP 地址不够用的问题, 因为使用子网反而能使用的 IP 地址会变少, 子网通常是使用在跨地域的网络互联之中,两者之间使用路由器连线,同时也上 Internet, 但只申请到一组C类 IP 地址, 过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接 RemoteBridge 连接, 那便没有使用子网的问题.
通过 IP 地址的二进制与子网掩码的二进制进行与运算, 确定某个设备的网络地址和主机号. 也就是说通过子网掩码分辨一个网络的网络部分和主机部分子网掩码一旦设置, 网络地址和主机地址就固定了.
子网一个最显著的特征就是具有子网掩码. 与 IP 地址相同, 子网掩码的长度也是 32 位, 也可以使用十进制的形式. 例如, 为二进制形式的子网掩码: 11111111111111111111111100000000, 采用十进制的形式为: 255.255.255.0.
子网掩码是一个 32 位地址, 是与 IP 地址结合使用的一种技术. 它的主要作用有两个, 一是用于屏蔽 IP 地址的一部分以区别网络标识和主机标识, 并说明该 IP 地址是在局域网上, 还是在远程网上. 二是用于将一个大的 IP 网络划分为若干小的子网络.
用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目. 在定义子网掩码前, 必须弄清楚本来使用的子网数和主机数目.
定义子网掩码的步骤为:
210.73.a.b, 该网络地址为 C 类 IP 地址, 网络标识为 210.73.a, 主机标识为b. 1 (即把第四字节的最后四位作为主e机位, 其实在这里有个简单的规律, 非网络位的前几位置1原网络就被分为2的几次方个网络, 这样原来网络就被分成了2的4次方16个子网) , 即第四个字节为 11110000, 这个数我们暂且称作新的二进制子网掩码. 1, 即前三个字节都置为1, 第四个字节低四位置为0, 则子网掩码的间断二进制形式为: 11111111.11111111.11111111.11110000255.255.255.240这个数为该网络的子网掩码. 在求子网掩码之前必须先搞清楚要划分的子网数目, 以及每个子网内的所需主机数目.
如欲将 B 类 IP 地址 168.195.0.0 划分成 27 个子网:
即为划分成 27 个子网的B类 IP 地址 168.195.0.0的子网掩码.
如欲将 B 类 IP 地址 168.195.0.0 划分成若干子网, 每个子网内有主机 700 台:
对无子网的 IP 地址, 可写成主机号为 0 的掩码. 如 IP 地址 210.73.140.5, 掩码为 255.255.255.0, 也可以缺省掩码, 只写 IP 地址.
有子网时, 一定要二者配对出现. 以 C 类地址为例.
(以下一段没有指定掩码为 27 位, 在掩码为 27 位的情况下才成立~~)
子网掩码通常有以下 2 种格式的表示方法:
/符号以及 1-32 的数字, 其中 1-32 的数字表示子网掩码中网络标识位的长度, 如: 192.168.1.1/24 的子网掩码也可以表示为 255.255.255.0.注: 这讲的都是有内网
子网掩码是用来判断任意两台计算机的 IP 地址是否属于同一子网络的根据. 最为简单的理解就是两台计算机各自的 IP 地址与子网掩码进行AND运算后, 如果得出的结果是相同的, 则说明这两台计算机是处于同一个子网络上的, 可以进行直接的通讯. 就这么简单.
请看以下示例:
运算演示之一
| IP 地址 | 192.168.0.1 |
|---|---|
| 子网掩码 | 255.255.255.0 |
| AND运算 | (AND运算法则: 1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0) |
转化为二进制进行运算:
| IP 地址 | 11000000.10101000.00000000.00000001 |
|---|---|
| 子网掩码 | 11111111.11111111.11111111.00000000 |
| AND运算 | 11000000.10101000.00000000.00000000 |
| 转化为十进制 | 192.168.0.0 |
运算演示之二
| IP 地址 | 192.168.0.254 |
|---|---|
| 子网掩码 | 255.255.255.0 |
| 转化为二进制进行运算 | |
| IP 地址 | 11000000.10101000.00000000.11111110 |
| 子网掩码 | 11111111.11111111.11111111.00000000 |
| AND运算 | 11000000.10101000.00000000.00000000 |
| 转化为十进制 | 192.168.0.0 |
运算演示之三
| IP 地址 | 192.168.0.4 |
|---|---|
| 子网掩码 | 255.255.255.0 |
| 转化为二进制进行运算 | |
| IP 地址 | 11000000.10101000.00000000.00000100 |
| 子网掩码 | 11111111.11111111.11111111.00000000 |
| AND运算 | 11000000.10101000.00000000.00000000 |
| 转化为十进制 | 192.168.0.0 |
通过以上对三组计算机 IP 地址与子网掩码的 AND 运算后, 我们可以看到它运算结果是一样的. 均为 192.168.0.0, 所以计算机就会把这三台计算机视为是同一子网络, 然后进行通讯的. 我现在单位使用的代理服务器, 内部网络就是这样规划的.
也许又要问, 这样的子网掩码究竟有多少了 IP 地址可以用呢? 你可以这样算.
根据上面我们可以看出, 局域网内部的 IP 地址是我们自己规定的 (当然和其他的 IP 地址是一样的), 这个是由子网掩码决定的通过对 255.255.255.0 的分析. 可得出: 前三位 IP 码由分配下来的数字就只能固定为 192.168.0, 所以就只剩下了最后的一位了, 那么显而易见了, IP 地址只能有 (2的8次方-2), 即256-2=254, 一般主机地址全为0或者1 (二进制) 有其特殊的作用.
那么你可能要问了:如果我的子网掩码不是 255.255.255.0 呢? 你也可以这样做, 假设你的子网掩码是 255.255.128.0, 那么局域网内的 IP 地址的前两位已固定, 这样, 就可以按照下边的计算来看看同一个子网内到底能有多少台机器
| IP 地址 | 11000000.10101000.1*******.******** |
|---|---|
| 子网掩码 | 11111111.11111111.10000000.00000000 |
| AND运算 | 11000000.10101000.10000000.00000000 |
| 转化为十进制 | 192.168.128.0 |
192.168.128.1-192.168.128.254 192.168.129.1-192.168.129.254 192.168.130.1-192.168.130.254 192.168.131.1-192.168.131.254 . . . . . . . . . . . . . 192.168.139.1-192.168.139.254 192.168.140.1-192.168.140.254 192.168.141.1-192.168.141.254 192.168.142.1-192.168.142.254 192.168.143.1-192.168.143.254 . . . . . . . . . . . . . 192.168.254.1-192.168.254.254 192.168.255.1-192.168.255.254
Ping 192.168.129.233通过测试, 访问 http://192.168.129.233 可以显示出主页.Ping 192.168.255.254 通过测试, 访问 http://192.168.255.254 可以显示出主页.
现在就可以看子网中能有多少台机器了, 255.255.255.128, 分解, 11111111.11111111.11111111.10000000, 所以内部网络的 IP 地址只能是 xxxxxxxx.xxxxxxxx.xxxxxxxx.0??????? 到 xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111.
#
# 基于 NCSA 服务器的配置文件 由 Rob McCool 编写,龙子翻译
#
# Apache服务器主配置文件. 包括服务器指令的目录设置.
# 详见 http://www.apache.org/docs/
#
# 请在理解用途的基础上阅读各指令。
#
# 除非用ResourceConfig或AccessConfig覆盖这儿的标识
#
配置标识由三个基本部分组成:
响应虚拟主机不能处理的请求。
同时也提供所有虚拟主机的设置值。
#
# 配置和日志文件名:指定服务器控制文件命名时,
# 以 “/” (或 “drive:/” for Win32)开始,服务器将使用这些绝对路径。
# 如果文件名不是以”/”开始的,预先考虑服务器根目录–
# 因此 “logs/foo.log”,如果服务器根目录是”/usr/local/apache”,
# 服务器将解释为 “/usr/local/apache/logs/foo.log”.
#
# 注: 指定的文件名需要用”/”代替”\”。
# (例, “c:/apache” 代替 “c:\apache”).
# 如果省略了驱动器名,默认使用Apache.exe所在的驱动器盘符
# 建议指定盘符,以免混乱。
#
### Section 1: Global Environment
#当服务器响应主机头(header)信息时显示Apache的版本和操作系统名称
ServerTokens OS
#设置服务器的根目录
ServerRoot "/etc/httpd" #ScoreBoardFile run/httpd.scoreboard
#设置运行Apache时使用的PidFile的路径
PidFile run/httpd.pid
#若300秒后没有收到或送出任何数据就切断该连接
Timeout 300
#不使用保持连接的功能,即客户一次请求连接只能响应一个文件,建议用户将此参数的值设置为On,即允许使用保持连接的功能
KeepAlive Off
#在使用保持连接功能时,设置客户一次请求连接能响应文件的最大上限
MaxKeepAliveRequests 100
#在使用保持连接功能时,两个相邻的连接的时间间隔超过15秒,就切断连接
KeepAliveTimeout 15
##
## Server-Pool Size Regulation (MPM specific)
##
# prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves
#设置使用Prefork MPM运行方式的参数,此运行方式是Red hat默认的方式
<IfModule prefork.c>
#设置服务器启动时运行的进程数
StartServers 8
#Apache在运行时会根据负载的轻重自动调整空闲子进程的数目
#若存在低于5个空闲子进程,就创建一个新的子进程准备为客户提供服务
MinSpareServers 5
#若存在高于20个空闲子进程,就创建逐一删除子进程来提高系统性能
MaxSpareServers 20
#限制同一时间的连接数不能超过150
MaxClients 150
#限制每个子进程在结束处理请求之前能处理的连接请求为1000
MaxRequestsPerChild 1000 </IfModule> # worker MPM # StartServers: initial number of server processes to start
#设置使用Worker MPM运行方式的参数
<IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
# perchild MPM # NumServers: constant number of server processes
#设置使用perchild MPM运行方式的参数
<IfModule perchild.c> NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 0 </IfModule>
#设置服务器的监听端口
#Listen 12.34.56.78:80 Listen 202.112.85.101:80
#
# Load config files from the config directory "/etc/httpd/conf.d".
#将/etc/httpd/conf.d目录下所有以conf结尾的配置文件包含进来
Include conf.d/*.conf
#
# Dynamic Shared Object (DSO) Support
#动态加载模块(DSO)
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule access_module modules/mod_access.so LoadModule auth_module modules/mod_auth.so LoadModule auth_anon_module modules/mod_auth_anon.so LoadModule auth_dbm_module modules/mod_auth_dbm.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule include_module modules/mod_include.so LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so LoadModule usertrack_module modules/mod_usertrack.so LoadModule unique_id_module modules/mod_unique_id.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule asis_module modules/mod_asis.so LoadModule info_module modules/mod_info.so LoadModule cgi_module modules/mod_cgi.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule imap_module modules/mod_imap.so LoadModule actions_module modules/mod_actions.so LoadModule speling_module modules/mod_speling.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so
#当使用内置模块perfork.c时动态加载cgi_module
<IFModule prefork.c> LoadModule cgi_module modules/mod_cgi.so </IfModule> #ExtendedStatus On
### Section 2: ‘Main’ server configuration
#设置运行Apache服务器的用户和组
User apache Group apache
#设置Apache服务器管理员的E_mail地址
ServerAdmin admin at astro dot bnu.edu.cn
ServerName www.livingelsewhere.net
#关闭此选项,当Apache服务器需要指向本身的连接时使用
#serverName:port作为主机名,例如www.livingelsewhere.net:80
#若打开此选项将使用www.livingelsewhere.net port 80作为主机名
UseCanonicalName Off
#设置根文档路径
#DocumentRoot "/var/www/html" DocumentRoot "/home/httpd"
#设置apache服务器根的访问权限
<Directory /> #允许符号链接跟随,访问不在本目录下的文件 Options FollowSymLinks #禁止读取.htaccess配置文件的内容 AllowOverride None </Directory>
#设置根文档目录的访问权限
<Directory "/home/httpd"> #Indexes:当在目录中找不到DirectoryIndex列表中指定的文件 #就生成当前目录的文件列表 #FollowSymLinks允许符号链接跟随,访问不在本目录下的文件 Options Indexes FollowSymLinks #禁止读取.htaccess配置文件的内容 AllowOverride None #指定先执行Allow(允许)访问规则,在执行Deny访问规则 Order allow,deny # Allow from 202.112.85.0/16 #设置Allow(允许)访问规则,允许所有连接 Allow from all # Deny from all </Directory>
#对Apache服务器的根的访问不生成目录列表,同时指定错误输出页面
<LocationMatch "^/$> Options -Indexes ErrorDocument 403 /error/noindex.ht
#不允许每用户的服务器配置
<IfModule mod_userdir.c>
#不允许每用户的服务器配置
UserDir disable
##基于安全考虑,禁止root用户使用自己的个人站点
#UserDir disable root
##配置对每个用户web站点目录的设置
#UserDir public_html </IfModule>
#设置对每个用户web站点目录的访问权限
#<Directory /home/*/public_html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec # <Limit GET POST OPTIONS> # Order allow,deny # Allow from all # </Limit> # <LimitExcept GET POST OPTIONS> # Order deny,allow # Deny from all # </LimitExcept> #</Directory>
#当访问服务器时,依次查找页面Index.html index.htm.var
DirectoryIndex index.html index.html.var
#指定保护目录配置文件的名称
AccessFileName .htaccess
#拒绝访问以.ht开头的文件,即保证.htaccess不被访问
<Files ~ "^.ht"> Order allow,deny Deny from all </Files>
#指定负责处理MIME对应格式的配置文件的存放位置
TypesConfig /etc/mime.types
#指定默认的MIME文件类型为纯文本或HTML文件
DefaultType text/plain
#当mod_mime_magic.c模块被加载时,指定magic信息码配置文件的存放位置
<IfModule mod_mime_magic.c> # MIMEMagicFile /usr/share/magic.mime MIMEMagicFile conf/magic </IfModule>
#只记录连接Apache服务器的Ip地址,而不纪录主机名
HostnameLookups Off
#指定错误日志存放位置
ErrorLog logs/error_log
#指定记录的错误信息的详细等级为warn等级
LogLevel warn
#定义四中记录日志的格式
LogFormat "%h %l %u %t "%r" %>s %b "%{ Referer }i" "%{ User-Agent }i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{ Referer }i -> %U" referer
LogFormat "%{ User-agent }i" agent
#指定访问日志的纪录格式为combined(混合型),并指定访问日志存放位置
# CustomLog logs/access_log common CustomLog logs/access_log combined #CustomLog logs/referer_log referer #CustomLog logs/agent_log agent #CustomLog logs/access_log combined
#设置apache自己产生的页面中使用apache服务器版本的签名
ServerSignature On
#设置内容协商目录的访问别名
Alias /icons/ "/var/www/icons/"
#设置/var/www/icons/的访问权限
<Directory "/var/www/icons"> #MultiViews 使用内容协商功决定被发送的网页的性质 Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
#设置网页邮件服务
Alias /webmail "/usr/share/squirrelmail"
<Directory "/usr/share/squirrelmail"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
#设置apache手册的访问别名
Alias /manual "/var/www/manual"
<Directory "/var/www/manual"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
#设置浏览器匹配
BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4.0" force-response-1.0 BrowserMatch "Java/1.0" force-response-1.0 BrowserMatch "JDK/1.0" force-response-1.0 BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully BrowserMatch "^WebDrive" redirect-carefully
#
# Allow server status reports, with the URL of http:#servername/server-status
# Change the “.your-domain.com” to match your domain to enable.
#
#<Location /server-status> # SetHandler server-status # Order deny,allow # Deny from all # Allow from .your-domain.com #</Location>
#
# Allow remote server configuration reports, with the URL of
# http:#servername/server-info (requires that mod_info.c be loaded).
# Change the “.your-domain.com” to match your domain to enable.
#
#<Location /server-info> # SetHandler server-info # Order deny,allow # Deny from all # Allow from .your-domain.com #</Location>
#设置APache为代理服务器
# Proxy Server directives. Uncomment the following lines to
# enable the proxy server:
#
#<IfModule mod_proxy.c> #ProxyRequests On
#
#<Proxy *> # Order deny,allow # Deny from all # Allow from .your-domain.com #</Proxy>
#
# Enable/disable the handling of HTTP/1.1 “Via:” headers.
# (“Full” adds the server version; “Block” removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#
#ProxyVia On
#
# To enable the cache as well, edit and uncomment the following lines:
# (no cacheing without CacheRoot)
#
#CacheRoot "/etc/httpd/proxy" #CacheSize 5 #CacheGcInterval 4 #CacheMaxExpire 24 #CacheLastModifiedFactor 0.1 #CacheDefaultExpire 1 #NoCache a-domain.com another-domain.edu joes.garage-sale.com #</IfModule> # End of proxy directives.
#设置虚拟主机
### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn’t need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http:#httpd.apache.org/docs-2.0/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option ‘-S’ to verify your virtual host
# configuration.
#
# Use name-based virtual hosting.
#指令监听本地计算机上所有的IP地址请求
#NameVirtualHost *
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *> #定义虚拟主机的设置,此设置将覆盖前面有的的相同指令 # ServerAdmin webmaster at dummy-host dot example.com # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost>
#指定DAV加锁数据库文件的存放位置
<IfModule mod_dav_fs.c> # Location of the WebDAV lock database. DAVLockDB /var/lib/dav/lockdb </IfModule>
Alias /docs "/home/EMU/webmail/docs/"
<Directory "/home/EMU/webmail/docs"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
<IfModule mod_dav_fs.c> # Location of the WebDAV lock database. DAVLockDB /var/lib/dav/lockdb </IfModule>
#设置CGI目录的访问别名
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#由于red hat中不使用worker MPM运行方式,所以不加载mod_cgid.c模块
<IfModule mod_cgid.c>
#
# Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
# for setting UNIX socket for communicating with cgid.
#
#Scriptsock logs/cgisock </IfModule>
#设置CGI目录的访问权限
<Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>
#重定向连接
# Redirect permanent /foo http:#www.example.com/bar
#设置自动生成目录列表的显示方式
#FancyIndexing 对每种类型的文件前加上一个小图标以示区别 #VersionSort 对同一个软件的多个版本进行排序 #NameWidth=* 文件名字段自动适应当前目录下的最长文件名 IndexOptions FancyIndexing VersionSort NameWidth=*
#当使用IndexOptions FancyIndexing之后,配置下面的参数
#用于告知服务器在遇到不同的文件类型或扩展名时采用MIME编码格式
#辨别文件类型并显示相应的图标
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/*
#当使用IndexOptions FancyIndexing之后,配置下面的参数
#用于告知服务器在遇到不同的文件类型或扩展名时采用所指定的格式
#并显示相应的图标
AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi AddIcon /icons/uuencoded.gif .uu AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif core AddIcon /icons/back.gif .. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^
#当使用IndexOptions FancyIndexing之后,且无法识别文件类型时
#显示此处定义的图标
DefaultIcon /icons/unknown.gif
#
# AddDescription allows you to place a short description after a file in
# server-generated indexes. These are only displayed for FancyIndexed
# directories.
# Format: AddDescription “description” filename
#
#AddDescription "GZIP compressed document" .gz #AddDescription "tar archive" .tar #AddDescription "GZIP compressed tar archive" .tgz
#当服务器自动列出目录列表时,在所生成的页面之后显示readme.html的内容
ReadmeName README.html
#当服务器自动列出目录列表时,在所生成的页面之前显示header.html的内容
HeaderName HEADER.html
#
# IndexIgnore is a set of filenames which directory indexing should ignore
# and not include in the listing. Shell-style wildcarding is permitted.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
#设置在线浏览用户可以实时解压缩.z .gz .tgz类型的文件
#并非所有浏览器都支持
AddEncoding x-compress Z AddEncoding x-gzip gz tgz
#
# DefaultLanguage nl
# Danish (da) – Dutch (nl) – English (en) – Estonian (et)
# French (fr) – German (de) – Greek-Modern (el)
# Italian (it) – Norwegian (no) – Norwegian Nynorsk (nn) – Korean (kr)
# Portugese (pt) – Luxembourgeois* (ltz)
# Spanish (es) – Swedish (sv) – Catalan (ca) – Czech(cz)
# Polish (pl) – Brazilian Portuguese (pt-br) – Japanese (ja)
# Russian (ru) – Croatian (hr)
#
#设置网页内容的语言种类(浏览器要启用内容协商)
#对中文网页,此项无实际意义
AddLanguage da .dk AddLanguage nl .nl AddLanguage en .en AddLanguage et .et AddLanguage fr .fr AddLanguage de .de AddLanguage he .he AddLanguage el .el AddLanguage it .it AddLanguage ja .ja AddLanguage pl .po AddLanguage kr .kr AddLanguage pt .pt AddLanguage nn .nn AddLanguage no .no AddLanguage pt-br .pt-br AddLanguage ltz .ltz AddLanguage ca .ca AddLanguage es .es AddLanguage sv .se AddLanguage cz .cz AddLanguage ru .ru AddLanguage tw .tw AddLanguage zh-tw .tw AddLanguage hr .hr
#当启用内容协商时,设置语言的先后顺序
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
#Prefer 当有多种语言可以匹配时,使用LanguagePriority 列表的第一项
#Fallback 当没有语言可以匹配时,使用LanguagePriority 列表的第一项
ForceLanguagePriority Prefer Fallback
#设置默认字符集
AddDefaultCharset ISO-8859-1 #设置各种字符集 AddCharset ISO-8859-1 .iso8859-1 .latin1 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen AddCharset ISO-8859-3 .iso8859-3 .latin3 AddCharset ISO-8859-4 .iso8859-4 .latin4 AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk AddCharset ISO-2022-JP .iso2022-jp .jis AddCharset ISO-2022-KR .iso2022-kr .kis AddCharset ISO-2022-CN .iso2022-cn .cis AddCharset Big5 .Big5 .big5 # For russian, more than one charset is used (depends on client, mostly): AddCharset WINDOWS-1251 .cp-1251 .win-1251 AddCharset CP866 .cp866 AddCharset KOI8-r .koi8-r .koi8-ru AddCharset KOI8-ru .koi8-uk .ua AddCharset ISO-10646-UCS-2 .ucs2 AddCharset ISO-10646-UCS-4 .ucs4 AddCharset UTF-8 .utf8 # The set below does not map to a specific (iso) standard # but works on a fairly wide range of browsers. Note that # capitalization actually matters (it should not, but it # does for some browsers). # # See ftp:#ftp.isi.edu/in-notes/iana/assignments/character-sets # for a list of sorts. But browsers support few. # AddCharset GB2312 .gb2312 .gb AddCharset utf-7 .utf7 AddCharset utf-8 .utf8 AddCharset big5 .big5 .b5 AddCharset EUC-TW .euc-tw AddCharset EUC-JP .euc-jp AddCharset EUC-KR .euc-kr AddCharset shift_jis .sjis
#添加新的MIME类型(避免用户编辑/etc/mime.types)
AddType application/x-tar .tgz
#
# AddHandler allows you to map certain file extensions to “handlers”:
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add “ExecCGI” to the “Options” directive.)
#
#AddHandler cgi-script .cgi
#
# For files that include their own HTTP headers:
#
#AddHandler send-as-is asis
#设置apcche对某些扩展名的处理方式
AddHandler imap-file map AddHandler type-map var
#使用过滤器执行SSI
AddOutputFilter INCLUDES .shtml
#设置错误页面目录的别名
Alias /error/ "/var/www/error/" <IfModule mod_negotiation.c> <IfModule mod_include.c> <Directory "/var/www/error"> AllowOverride None Options IncludesNoExec AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all LanguagePriority en es de fr ForceLanguagePriority Prefer Fallback </Directory> #设置错误输出页面 ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var ErrorDocument 410 /error/HTTP_GONE.html.var ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var </IfModule> </IfModule>
TOP:
.toolbar{
position:fixed;
z-index:50;
top:0px;
left:0;
width:100%;
_top:expression(offsetParent.scrollTop);
_position:absolute;
}
BOTTOM:
#bottombar {
position:fixed;
bottom:0;
z-index:50;
_position: absolute;
_bottom: auto;
_clear: both;
_top:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.scrollTop+(documentElement.clientHeight-this.clientHeight) - 6: document.body.scrollTop+(document.body.clientHeight-this.clientHeight) - 6);
语法: STYLE="filter:filtername(fparameter1, fparameter2...)"
滤镜说明
alpha 设置透明层次blur 创建高速度移动效果, 即模糊效果chroma 制作专用颜色透明DropShadow 创建对象的固定影子FlipH 创建水平镜像图片FlipV 创建垂直镜像图片glow 加光辉在附近对象的边外gray 把图片灰度化invert 反色light 创建光源在对象上mask 创建透明掩膜在对象上shadow 创建偏移固定影子wave 波纹效果Xray 使对象变得像被x光照射一样STYLE="filter:Alpha(Opacity=opacity, FinishOpacity=finishopacity, Style=style, StartX=startX, StartY=startY, FinishX=finishX, FinishY=finishY)"
说明:
Opacity 起始取值为0~100, 0 为透明, 100 为原图. FinishOpacity 目标值. Style 1 或 2 或 3StartX 任意值StartY 任意值filter:Alpha(Opacity="0",FinishOpacity="75",Style="2")
STYLE="filter:Blur(Add = add, Direction = direction, Strength = strength)"
说明:
Add 一般为1, 或0. Direction 角度, 0~315度, 步长为45度. Strength 效果增长的数值, 一般5即可. filter:Blur(Add="1",Direction="45",Strength="5")
STYLE="filter:Chroma(Color = color)"
说明:
color #rrggbb格式, 任意. filter:Chroma(Color="#FFFFFF")
STYLE="filter:DropShadow(Color=color, OffX=offX, OffY=offY, Positive=positive)"
说明:
Color #rrggbb格式, 任意. Offx X轴偏离值. Offy Y轴偏离值. Positive 1或0. filter:DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1")
STYLE="filter:FlipH"
filter:FlipH
STYLE="filter:FlipV"
filter:FlipV
STYLE="filter:Glow(Color=color, Strength=strength)"
说明:
Color 发光颜色.Strength 强度(0-100)filter:Glow(Color="#6699CC",Strength="5")
STYLE="filter:Gray"
filter:Gray
STYLE="filter:Invert"
filter:Invert
STYLE="filter:Mask(Color=color)"
filter:Mask (Color="#FFFFE0")
filter:Shadow(Color=color, Direction=direction)
说明:
Color #rrggbb格式. Direction 角度, 0-315度, 步长为45度. filter:Shadow (Color="#6699CC", Direction="135")
filter: Wave(Add=add, Freq=freq, LightStrength=strength, Phase=phase, Strength=strength)
说明:
Add 一般为1, 或0. Freq 变形值. LightStrength 变形百分比. Phase 角度变形百分比. Strength 变形强度. filter: wave(Add="0", Phase="4", Freq="5", LightStrength="5", Strength="2")
STYLE="filter:Xray"
filter:Xray
firefox 不能对 innerText 支持
firefox 支持 innerHTML 但却不支持 innerText ,它支持 textContent 来实现 innerText,不过默认把多余的空格也保留了。如果不用 textContent,如果字符串里面不包含 HTML 代码也可以用 innerHTML 代替。
禁止选取网页内容
在 IE 中一般用 JS:obj.onselectstart = function(){return false;}
firefox 用 CSS: -moz-user-select:none
滤镜的支持(例:透明滤镜)
IE:filter:alpha(opacity=10);
firefox 3.0:-moz-opacity:.10;
捕获事件
IE:obj.setCapture()obj.releaseCapture()。
Firefox:document.addEventListener("mousemove",mousemovefunction,true);, document.removeEventListener("mousemove",mousemovefunction,true);
获取鼠标位置
IE:event.clientX, event.clientY
firefox:需要事件函数传递事件对象 obj.onmousemove=function(ev){ X= ev.pageX;Y=ev.pageY;}
DIV 等元素的边界问题
比如:设置一个div的CSS: {width:100px;height:100px;border:#000000 1px solid;}
IE中:div的宽度(包括边框宽度):100px,div的高度(包括边框宽度):100px;
firefox:div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px;
判断浏览器类型
var isIE=document.all ? true : false; 如果支持 document.all 语法那么 isIE=true,否则 isIE=false
在不同浏览器下的CSS处理
一般可以用!important来优先使用css语句(仅firefox支持)
eg: {border-width:0px!important;border-width:1px;}, 在 firefox 下这个元素是没有边框的,在 IE 下边框宽度是 1px。
document.formName.item(“itemName”) 问题
IE下,可以使用 document.formName.item("itemName") 或 document.formName.elements["elementName"]。
Firefox下,只能使用 document.formName.elements["elementName"]。
集合类对象问题
IE下,可以使用 () 或 [] 获取集合类对象;
Firefox下,只能使用 [] 获取集合类对象。
自定义属性问题
IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;
Firefox下,只能使用 getAttribute() 获取自定义属性。
eval(“idName”)问题
IE下,可以使用 eval(“idName”) 或 getElementById(“idName”) 来取得 id 为 idName 的HTML对象;
Firefox下,只能使用 getElementById(“idName”) 来取得 id 为 idName 的HTML对象。
变量名与某 HTML 对象 ID 相同的问题
IE下,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用,
Firefox下则不能;Firefox下,可以使用与 HTML 对象 ID 相同的变量名,IE下则不能。
const 问题
Firefox 下,可以使用 const 关键字或 var 关键字来定义常量;
IE下,只能使用 var 关键字来定义常量。
input.type 属性问题
IE下 input.type 属性为只读;
Firefox 下 input.type 属性为读写。
window.event 问题
window.event 只能在 IE 下运行,而不能在 Firefox 下运行,这是因为 Firefox 的 event 只能在事件发生的现场使用。
event.x 与 event.y 问题
IE下,event 对象有 x、y 属性,但是没有 pageX、pageY 属性;
Firefox下,event 对象有pageX、pageY属性,但是没有x、y属性。
兼容处理:var myX = event.x ? event.x : event.pageX; var myY = event.y ? event.y:event.pageY;
event.srcElement 问题
问题说明:IE下,event 对象有 srcElement 属性,但是没有 target 属性;Firefox 下,even对象有 target 属性,但是没有 srcElement 属性。
兼容处理:srcObj = event.srcElement ? event.srcElement : event.target;
模态和非模态窗口问题
IE下,可以通过 showModalDialog和 showModelessDialog 打开模态和非模态窗口;Firefox下则不能。
兼容处理:直接使用 window.open(pageURL,name,parameters) 方式打开新窗口。如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用 window.opener来访问父窗口。如果需要父窗口控制子窗口的话,使用 var subWindow = window.open(pageURL,name,parameters); 来获得新开的窗口对象。
frame 和 iframe 问题
以下面的 frame 为例:<frame src="xxx.html" id="frameId" name="frameName" />
1 访问frame对象
IE:使用 window.frameId 或者 window.frameName 来访问这个frame对象;
Firefox:使用window.frameName来访问这个frame对象;
兼容处理:统一使用 window.document.getElementById(“frameId”) 来访问这个 frame 对象;
2 切换 frame 内容
在 IE 和 Firefox 中都可以使用 window.document.getElementById(“frameId”).src = “xxx.html” 或 window.frameName.location = “xxx.html” 来切换 frame 的内容;
如果需要将 frame 中的参数传回父窗口,可以在 frame 中使用 parent 关键字来访问父窗口。
事件委托方法
问题说明:IE下,使用 document.body.onload = inject; 其中 function inject()在这之前已被实现;在Firefox下,使用 document.body.onload = inject();
兼容处理:统一使用 document.body.onload=new Function("inject()");或者 document.body.onload = function() { /* 这里是代码 */}
[Function和function的区别]
访问的父元素的区别
在 IE 下,使用 obj.parentElement 或 obj.parentNode 访问 obj 的父结点;
firefox 下,使用 obj.parentNode 访问 obj 的父结点。
对象宽高赋值问题
FireFox 中类似 obj.style.height = imgObj.height 的语句无效。
兼容处理:统一使用 obj.style.height = imgObj.height + “px";
CSS圆角问题
IE:IE7 以下版本不支持圆角。
FF:-moz-border-radius:4px;,或者 -moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;。
Firefox3.5已不支持私有属性-moz-opacity了,在Mozilla 1.7 (Firefox 0.9)之前FF都是使用这个私有属性的,Firefox 0.9-Firefox3同时支持-moz-opacity和opacity这两个属性,Firefox升级到3.5之后,一些网站原来有的透明没有了,呵呵。
除了IE之外,目前主流浏览器, Opera 9.0及更高版本,Safari 1.2(WebKit 125) 及更高版本,chrome等等都支持opacity这个设置透明度的属性,opacity的属性值是0 < number <1的数值,默认值是1。
例如50%透明的类:.example { opacity: 0.5;}
IE的透明度的属性从IE4-IE8使用filter: alpha(opacity=number),这里的number是0-100之间的整数数值,IE8中我们也可以用-ms-filter: "alpha(opacity=number)"。IE中还支持 progid:DXImageTransform.Microsoft.Alpha(Opacity=xx)这种写法,但是不建议使用。
所以我们可以这样写透明度类:
.example { /* make the box translucent (80% opaque) */
opacity: 0.8; /* Firefox, Safari(WebKit), Opera */
-ms-filter: “alpha(opacity=80)”; /* IE 8 */
filter: alpha(opacity=80); /* IE 4-7 */
zoom: 1;/* set “zoom”, “width” or “height” to trigger “hasLayout” in IE 7 and lower */
}
这些可以参照:https://developer.mozilla.org/En/CSS:-moz-opacity
当然我们还会用js来设置元素的透明度,例如:
var el=document.getElementById("mybox");
el.style.opacity=50/100; //这里写出50/100主要是为了和ie的写法统一,便于一参数形式传入
el.style.filter='Alpha(Opacity=50)';
这里要说的是,Firefox3.5在css上已不支持私有属性-moz-opacity了,但是js中的el.style.MozOpacity=val/100;还是被Firefox3.5支持的,但是我不建议使用,因为这是ff的私有的,其他浏览器不支持。
前两天,开发中显示图片时,需要条件将图片灰度显示
找了好久,就是没找到FF下可以解决的方法
之后,看到了这篇文章,讲述的很是全面
于是,转载了过来
很久以来
一直都对于overflow的用法很是模糊
也曾多次看过手册
却总是不太明白
昨日真真切切的感受了一回~
原来overflow 为hidden时是不显示超过对象尺寸的内容
….