httpd服务centos6 配置 html网页
1.centos6挂载两个光盘 配置yum 复制到cdiso1 安装httpd服务 网页测试
两个镜像 第一个
mount /dev/sr0 /mnt/ ---先挂载镜像光盘1 到mnt下
cd /media/cdiso/
mkdir cdiso1 --创建cdiso1的目录
cp -rf /mnt/* /media/cdiso1 ---把 mnt挂载的镜像1内容复制到cdiso1中
du -sh /media/cdiso1 ---查看目录文件大小
第二个
去虚拟机中设置第二个镜像光盘
cd /media/
mkdir cdiso2 ---创建挂载点
mount /dev/sr0 /media/cdiso2 ---挂载
挂载两个光盘镜像的yum源
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.bak
vim CentOS-Base.repo
baseurl=file:///media/cdiso1
file:///media/cdiso2
安装软件 httpd
yum clean all --清空缓存
yum -y install httpd --安装httpd软件
yum list --查看yum列表
yum -y remove httpd --卸载httpd
1.相关配置文件路径 启停脚本 日志存放路径
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.d/*.conf 辅助配置文件
服务启停脚本:
/etc/rc.d/init.d/httpd start 或者 service httpd start
httpd启动选项文件:/etc/sysconfig/httpd ----选择工作模式
程序的主程序指令文件:① /usr/sbin/httpd
② /usr/sbin/httpd.event
③ /usr/sbin/httpd.worker
日志文件路径:
/var/log/httpd --->符号连接文件/etc/httpd/logs
访问日志:access_log --查看谁访问
错误日志:error_log
网页根路径:/var/www/html
2.)Centos6的httpd程序 配置文件组成 解读配置文件
配置文件可以实现配置Httpd的基本功能,
有三部分组成:
①Global Environment 全局特性配置
②Main server configuration 主服务器配置 即网站配置
③Virtual Hosts:虚拟主机配置(不要同第二种同时使用)
33 ### Section 1: Global Environment --全局配置
44 ServerTokens OS --服务器标签
57 ServerRoot "/etc/httpd" --根目录(即为默认路径可指定)
后面如果说有一个配置目录 没有指定 那么这就是默认路径
65 PidFile run/httpd.pid ---阿帕奇运行会有一个pid进程
写在 run/httpd.pid 这个文件下 ,没有指绝对路径就会在 第57 ServerRoot "/etc/httpd" 这个目录下面
root 27254 0.0 0.4 139140 4792 pts/2 S+ 20:21 0:00 vim httpd.conf
存放的是父进程的Pid号,下面都是子进程 不记录pid号
Httpd 是root运行的所以为父进程 ,下面是由父进程产生的
1.端口配置Listen(是否增加或更改监听端口)
格式:Listen [IP:] PORT IP省略代表监听所有IP地址。PORT端口
135 #Listen 12.34.56.78:80 ---也可以加上ip地址:80(可不写80)
136 Listen 80 ---侦听的是80端口(默认)
---也可增加8080 指定端口
2持久连接设置(是否开启,最大连接数,超时时间)
连接网页: 一次连接实现传输多次请求 (请求网页资源)
连接建立,每个资源获取完成后不会断开连接 而是继续等待其他的请求完成。
76 KeepAlive Off --是否开启持久连接以及设置连接超时
83 MaxKeepAliveRequests 100 --一次连接可完成100次的连接 最大连接数
89 KeepAliveTimeout 15 --两次时间请求间隔超时 15s则断开
#超时时间为15s,单位默认为s
Httpd-2.4支持毫秒级持久连接。
格式:KeepAlive On|Off 打开浏览器,F12打开调试,F5刷新
请求连接的数量和时间限制可自行配置(根据实际生产环境来定义,推荐较短持久连接时间)
3.MPM(多路并发模型响应)运行模式更改
centos6 rpm包为2.2版本,自带模块prefork worker event
查看当前使用的MPM模块:ps aux | grep httpd 默认是prefork
查看当前编译入httpd核心的MPM模块
命令格式: http[.MPM] -l http .worker -l http .event -l
运行模式更改 更换httpd程序,MPM模块
vim /etc/sysconfig/httpd --- httpd的脚本配置文件 解开httpd那个即可
/etc/sysconfig/httpd restart重启服务
ps aux | grep httpd 查看当前使用的MPM模块
可看到 /usr/sbin/httpd.worker 已更改
4.DSO动态加载模块配置
主配置文件中的LoadModule选项,进行启用或卸载已装载的模块。
动态装卸载模块的系统存放路径/etc/httpd/modules/ (链接路径--->/usr/lib64/httpd/modules)
httpd -M 查看其他编译装载的模块
vim /etc/httpd/conf/httpd.conf配置文件路径 :
/usr/lib64/httpd/modules/模块文件位置
解#LoadModule foo_module modules/mod_foo.so后面模块就会加载起来
这是阿帕奇现在加载的模块 但这个/etc/httpd/modules --是软连接
连接到 实际模块文件位置:/usr/lib64/httpd/modules/ --实际路径(可用)
5.网页根路径配置和ServerName
vim /etc/httpd/conf/httpd.conf主配置文件
由httpd主配置文件中的DocumentRoot 来定义
网页的根路径,默认在/var/www/html 也是在访问URL地址的起始根路径 /。
/ 代表网页根路径
292 DocumentRoot "/var/www/html" --指定网页根路径(可修改)
276 ServerName www.example.com:80 --设定网站的名称 80端口可不加
6.编写测试网站
vim /etc/httpd/conf/httpd.conf主配置文件
404 DirectoryIndex index.html index.html.var 因为这里指定了名称首页
所以就建立这个测试网站首页文件
<body>
<h1>test</h1>
<p>web test</p>
</br>
<img src="welcome.jpg"></br>
<a href="http://www.baidu.com">www.baidu.com.com</a>
</body>
7.指定首页 更改默认主页面 启动服务
vim /etc/httpd/conf/httpd.conf主配置文件
DirecotryIndex index.html index.html.var (html htm xhtml index.html.var) ----指定首页(.php .jsp .py .cgi .perl)
8.网页访问 启动服务 安装网页访问软件 在Linux内对WEB站点资源访问的相关命令方式
curl查看源码 elinks lynx 访问网站
yum -y install lynx 安装访问网站的软件
curl 请求资源的操作方法
curl [option] xxx.xxx.xxx.xxx[:80]
例如: curl 192.168.10.20
elinks 请求资源操作方法
elinks xxx.xxx.xxx.xxx [:80]
lynx xxx.xxx.xxx.xxx[:80]
lynx 192.168.10.20 --访问网站
curl 192.168.10.20 查看源码
在真机中访问
9.设定默认的字符集
vim /etc/httpd/conf/httpd.conf 在主配置文件中
761 AddDefaultCharset UTF-8
设定默认字符集为支持中文编码
10.目录 路径别名(请求的资源会自动进入服务器另外的网页路径)
vim /etc/httpd/conf/httpd.conf 在httpd 主配置文件中
给目录起别名格式:
Alias /URL/ “/XXX/XXX/dir/”
Alias 给他起别名 /URL/ 根目录下的URL 是 “/XXX/XXX/dir/”目录
网站服务器真实存在的目录
注意:最后面的路径提示符要统一,要么都有,要么都没有。
示例一:
Alias /bbs "/forum/htdocs"
<Directory "/forum/htdocs">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>
1.去修改配置文件增加别名
vim /etc/httpd/conf/httpd.conf
Alias /bbs "/var/www/html/bbs" bbs不存在但是指向后面的连接
<Directory "/var/www/html/bbs"> 对这个bbs目录进行控管
Options Indexes FollowSymLinks MultiViews 显示的选项
AllowOverride None --不进行权限的复写
order allow,deny
allow from all --访问的控制 allow all允许所有
</Directory>
上述别名的配置,就是说当你基于你的站点访问http://ip/bbs目录下的文件时,会直接从服务器/forum/htdocs目录下访问对应的文件。
cd /var/www/html/ mkdir bbs新建目录
echo "bbs text" > index.html
重启服务测试
/etc/init.d/httpd restart
2.真实机访问
http://192.168.10.20/bbs
11.httpd的日志设定解读(很重要)
1.)访问日志(CustomLog)
主配置文件默认定义 在 cd /var/log/httpd/logs/access.log
有不同的定义格式,有combined(组合格式) common agent
访问日志分析:%h--->请求资源客户端的IP地址
%l---->远程登陆的用户名(大多数都是空,以-表示)
%u--->被认证登陆的用户名
%t---->服务器收到请求的时间
%r---->请求报文的首行信息(method URL version)
%s---->响应请求的状态码
%b:响应报文的大小,不包括首部,以字节为单位
%{Referer}:请求报文当中的”referer”首部的值(首部字段Referer会告知服务器请求的原始资源的URI)
%{User-Agent}:请求报文中”User-Agent”首部的值,即发出请求用到的应用程序。即浏览器
cd /var/log/httpd/logs/access.log
tail -f /var/log/httpd/logs/access.log
192.168.10.20 - - [28/Oct/2019:22:37:54 +0800] "GET / HTTP/1.1" 200 173 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
日志解读 access.log
192.168.10.20 --客户IP地址
[28/Oct/2019:22:37:54 +0800] --时间
GET --获取的方法
/ --获取的内容 首页
HTTP/1.1 --协议和版本
200 --状态码
curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" --使用的浏览器 使用的客户端程序
②错误日志(errorLog)
主配置文件中定义了其日志位置, cd /var/log/httpd/logs/error_log
错误日志规定了级别(LogLevel warn) 分别为dubug info notice warn error crit alert emerg
错误日志 errorLog
7debug 用来debug (除错) 时产生的讯息数据;
6 info 仅是一些基本的讯息说明而已;
5. notice 虽然是正常信息,但比info还需要被注意到的一些信息内容;
4 warning (warn ) 警示的讯息,可能有问题,但是还不至于影响到某个daemon运行的信息;基本上,info, notice, warn这三个讯息都是在告知一些基本信息而已,应该还不至于造成一些系统运行困扰;
3err (error) 一些重大的错误讯息,例如配置文件的某些设置值造成该服务
服法启动的信息说明,通常借由err的错误告知,应该可以了解到该服务无法启动的问题呢!
2.crit 比error还要严重的错误信息,这个crit是临界点( critical)
的缩写,这个错误已经很严重了喔!
1. alert 警告警告,已经很有问题的等级,比crit还要严重!
0 emerg ( panic) 疼痛等级,意指系统已经几乎要死机的状态!很严重的错误信息了。通常大概只有硬件出问题,导致整个核心无法顺利运行,就会出现这样的等级的讯息吧!
2.httpd 案例 网页查看图片 设置持久连接数等
1.)yum 安装 httpd服务
yum -y install httpd
2.)编写网页,访问自己的IP地址,显示自己编辑的HTML的内容
编写网页,要求直接访问自己的IP地址,即可出现自己编写的Html页面index.html:
vim /var/www/html/index.html
<body>
<h1>test</h1>
<p>web test</p>
</br>
<img src="welcome.jpg"></br>
<a href="http://www.baidu.com">www.baidu.com.com</a>
</body>
启动服务
service httpd restart
3.)在真机中访问,
http://192.168.10.20 可以点击下面的百度网站
4.)更改域名,增加监听端口
将httpd服务器的域名设置为www.ujiuye.com,
并使其除了监听自己默认的80端口外,还额外监听在8080端口上。
ServerName www.ujiuye.com:80
137 Listen 192.168.10.20:80 监听的端口
138 Listen 80
139 Listen 8080
重启
/etc/init.d/httpd restart
service httpd restart
然后作本机的测试
因为没有DNS 所以使用本机指定解析
vim /etc/hosts 这样就解析出ujiuye是10.20
本机linux测试
lynx www.ujiuye.com
5更改进程运行模式为MPM模式,查看httpd验证
将httpd程序运行模式改为MPM模式,并查看httpd进程进行验证。
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker解开或者写入
注意:yum -y install php-zts-5.3.3-47.el6.x86_64
然后重启 查看进程
/etc/init.d/httpd restart
service httpd restart
ps -aux | grep http
6.)更改网页路径.
vim /etc/httpd/conf/httpd.conf主配置文件
更改网页根路径为/doc/www/html/下,并进行访问。
DocumentRoot "/doc/www/html" ---指定根目录,没有要新建
DocumentRoot --指定网站根目录 注意写的时候的标签对
加入内容
<Directory "/doc/www/html">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
解读文件
Options ---目录显示属性的设置
Indexes ---如果这个目录下没有找到doc/www/html这个网站的话,就把这个目录的内容列表一下
FollowSymLinks ---这个目录里的软连接是可以失效的
Allow from all ---所有人都可以访问
<Directory "/doc/www/html">
</Directory> -标签对--通过标签对来进行访问控制
配置好后 重启服务
service httpd restart
客户端登录查看
7.)设置持久连接和最大连接数,超时时间
打开持久连接,设置最大连接数为50,超时时间为2s
76 KeepAlive On --是否开启持久连接以及设置连接超时
83 MaxKeepAliveRequests 100 --一次连接可完成100次的连接 最大连接数
89 KeepAliveTimeout 15 --两次时间请求间隔超时 15s则断开
#超时时间为15s,单位默认为s
8.目录别名 网页制作小技巧
vim /etc/httpd/conf/httpd.conf修改主配置文件
Alias /jxj "/doc/www/html/bbs"
<Directory "/doc/www/html/bbs">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
order allow,deny
allow from all
</Directory>
解读
Alias /jxj 网站后面加别名 实际位置是 /doc/www/html/bbs
创建别名网站这个文件
cd /doc/www/html/jxj
vim index.html
写入 I love you jing
网页制作小技巧
标题标签:<h1>---<h6> h1字号最大,h6字号最小。
段落标签:<p></p> 换行标签:</br> 范围标签<span></span>
图像标签<img> 超链接标签<a href=”http://xxx/xxx/xxx”> HIT</a>
特殊符号: (空格符号) "(引号”) ©(公司符号)
使其显示图片和文字
在/doc/www/html/bbs 新建测试网站:index.html
在其中写入图片的名称(图片也在bbs目录下)
Jxj相当于软连接 指向的是/doc/www/html/bbs 文件目录里的initial.html
3.理论:
1.)HTTP(超文本传输协议)基础:
属于应用层协议,目前主要实现网页共享和通信。
网页:纯文本文件,编写的基本语言为html,被客户端浏览器翻译成网页形式显示出来。
http:hyper text transfer protocol
html:超文本标记语言,属于一种标记语言(网页源码)。
CSS:Cascading Style Sheet(层级样式表,定义页面格式)
js:脚本编程语言,工作在客户端。
2.)HTML文档结构:
头部部分
标题部分
主体部分
网页内容:文本、图像
3.)网页基本标签
①头部部分:网页摘要信息,便于浏览器解析和搜索引擎搜索。
<title>标签 针对搜索引擎的搜索或更新频度的关键词。
例如:
<head>
<title> 我的测试网页 </title>
</head>
②主体部分
标题标签:<h1>---<h6> h1字号最大,h6字号最小。
段落标签:<p></p> 换行标签:</br> 范围标签<span></span>
图像标签<img> 超链接标签<a href=”http://xxx/xxx/xxx”> HIT</a>
特殊符号: (空格符号) "(引号”) ©(公司符号)
例如:
<body>
<h1>这是一级标签</h1>
<h2>这是二级标签</h2>
<p>这是一个段落</p>
测试换行</br>
<span>范围测试
范围测试</span>
<img src=”/xxx/xxx/xxx.jpg”/>
<a href=”http://www.ujiuye.com”> 优就业IT教育</a>
"aaa" bbb<br />Ujiuye.Inc
</body>
4.)http的工作原理
http请求流程:主要实现跨主机发送文档,客户端基于浏览器向服务端获取文档,文档在服务器的某个路径之中,
服务端此时监听在套接字上,服务器接受请求,分析文档是否存在,如果存在,从磁盘取到资源取到进程(网站服务程序进程)之中,封装成HTML的响应报文返回给客户端并在浏览器上显示。
5.)WEB资源:
WEB内容的重要组成部分,是客户端基于HTTP协议可以调用的服务器的相关资源。WEB资源分为静态资源(文件)和动态资源(文件)
WEB静态资源:服务器端的WEB资源,不会发生变化,不需要在服务器上进行执行的资源,原路返回发还给客户端
例如:.html .jpg .gif .txt .js .css .mp4 .avi 。。。
WEB动态资源:服务端的web动态资源,浏览器无法直接解析,需要在服务端进行执行一次,才发还给客户端的资源。
例如:.php .jsp .cgi ......
6.)MIME
(Multipurpose Internet Mali Extension,多用途英特网邮件扩藏)媒体类型:(使用不同的编码方式进行编码)
格式: major/minor,大类/子类
text/html ---文本/标签
text/Plain ---文本/普通文本
image/jpg
image/gif ......
因特网上有数千种不同类型的数据,HTTP仔细地给每种要通过web传输的对象都打上了名为MIME类型(MIME type)的数据格式标签,Web 服务器会为所有 HTTP 对象数据附加一个 MIME 类型。当 Web 浏览器从服务器中取回一个对象时,会去查看相关的 MIME 类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图 片文件、解析并格式化 HTML 文件、通过计算机声卡播放音频文件,或者运行外部插件软件来处理特殊格式的数据。
MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
1.HTML 格式的文本文档由 text/html 类型来标记
2.普通的 ASCII 文本文档由 text/plain 类型来标记
3.JPEG 版本的图片为 image/jpeg 类型
4.GIF 格式的图片为 image/gif 类型
5.Apple 的 QuickTime 电影为 video/quicktime 类型
6.微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型
7.)资源标识定位符
资源标识符--->URI,统一资源标识符用于标示一个抽象或者物理资源,相当于名称,由三部分组成:访问资源的命名机制,存放资源的主机名,资源自身的名称,由路径表示
资源定位符--->URL (服务器地址ip:port)统一资源定位符用于标示网络资源的位置,由三部分组成:第一部分是协议(或称为服务方式);第二部分是存有该资源的主机IP地址(有时也包括端口号);第三部分是主机资源的具体路径。
每个URL都必须从以下命名机制开始:ftp、http、https、gopher、mailto、news、nntp、telnet、wais、file或prospero。如果不是以此开头,则不是URL。
8.)PV .UV,AC.IV概念
PV:page view(一次页面的访问) 即页面访问量,每打开一次页面PV计数+1,刷新页面也是。包括全站PV,首站PV等
UV:user view (多少用户访问过,跟页面数量多无关,表现为用户活跃度,一台电脑终端为一个访客)
AC:Active connection 活动连接数,当前在使用的活动的连接数
IV:是IP访问数指独立IP访问数,一个独立的IP在一个计算时段内访问网站计算为1次IP访问数。在同一个计算时段内不管这个IP访问多少次均计算为1次。计算时段有以1天为一个计算时段,也有以1个小时为一个计算时段。
qps:每秒查询数 并发/响应
9.)WEB服务并发响应模型(web的I/O模型)
并发的概念:多个客户端同时请求服务器的资源,服务端进行资源I/O响应。
①:单进程I/O结构,一个进程处理一次请求,多个请求需串行响应。(排队)
②:多进程I/O结构--->启动多个进程,一个进程处理一个请求,多个进程同时进行处理请求。
注意:多进程I/O结构缺点:进程启动太多,会造成大量进程间切换,消耗大量的内存资源。
多进程I/O结构优点:进程之间互相不影响。
③:复用I/O结构:多路I/O处理器完成I/O复用,实现一个进程响应多个用户请求。
单个进程响应多个请求的实现方式:
1.) 多线程方式 一个进程生成多个线程,一个线程响应一个请求。
2.) 事件驱动方式,当web server接收到请求,就把他扔到一个队列中然后在继续响应请求。在队列中准备就绪后,服务器在把结果发送给客户端。
④:复用多进程I/O结构:启动多个进程,每个进程响应多个请求。
10.)HTTP协议版本:
HTTP 0.9版本 最初版本,已弃用
HTTP 1.0版本 最初广泛使用版本,支持多媒体资源,但是对缓存支持很差
HTTP 1.1版本 当前主流版本,增强了缓存功能。
HTTP 2.0版本 当前没有主流使用的版本,但功能强大。
11.)HTTP请求细节:(报文)
细分为:①:建立、处理连接(是否接受或拒绝)
②:接受请求
③:处理请求
④:访问资源
⑤:构建响应报文
⑥:发送响应报文
⑦:记录日志
处理请求:对请求报文进行解析,并获取请求资源和请求方法相关信息
请求报文首部:
GET /my_view_page.php HTTP/1.1 --网址网页指定根目录
Host: 10.0.17.183:8000
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
(KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://10.0.17.183:8000/my_view_page.php
Accept-Encoding: gzip, deflate, sdch
访问资源:获取http报文中请求指定的资源(存放在httpd服务器中,提供资源--->包括静态资源和动态资源,
在本地文件系统某个路径,此路径叫网页根路径--->会有多种路径映射)
构建响应报文:服务端将资源封装成响应报文,需要进行分类,明确标记资源类型。
资源访问可能会基于URL重定向方式进行响应(非客户端的请求资源,而是另一个访问路径)
发送响应报文:把构建的报文发送给请求方
记录日志:(同时方便分析客户行为需求)
12.)http协议的软件程序解决方案
静态资源请求WEB服务器程序
①:httpd(apache)
②:nginx
③:lighttpd
动态资源:
IIS
tomcat jboss jetty 轻量级
weblogic webshpere 企业级重量级
市场份额WEB服务器领域数据分析网站:https://news.netcraft.com/
http软件(apache)的详细介绍和安装(centos-6和centos-7)
apache有apache软件基金会提供,属于开源软件,在当今主要的web服务器领域是绝对的龙头老大。
apache程序在系统中命名---->httpd
13.)httpd程序的特点(工作模式)
高度模块化的设计:httpd内核+模块(modules)
DSO:动态共享对象,装载器根据当前地址空间的空闲情况,动态分配一块足够大小的虚拟地址空间给相应的共享对象
MPM:多路访问模块(多种不同的I/O模型,包括prefork模型,worker模型,event模型)
1.prefork:多进程模型,每个进程响应一个请求。一个主进程(监听套接字),负责生成n个子进程,子进程为工作进程,没有用户请求,也会生成空闲进程,等待请求达到。最大不超过1024个进程。
2.worker:多线程模型(多进程生成,一个进程生成多个线程),一个线程响应一个请求
3.event:事件驱动模型,一个进程响应多个请求。(httpd-2.2属于试验阶段,httpd-2.4生产环境已大规模使用)
14.)URI
<1>什么是URI
URI,通一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。
<2>URI的结构组成
URI通常由三部分组成:
①访问资源的命名机制;
②存放资源的主机名;
③资源自身的名称。
<3>URI举例
如:https://blog.csdn.net/qq_32595453/article/details/79516787
我们可以这样解释它:
①这是一个可以通过https协议访问的资源,
②位于主机 blog.csdn.net上,
③通过“/qq_32595453/article/details/79516787”可以对该资源进行唯一标识(注意,这个不一定是完整的路径)
二、URL
URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。
通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“://”符号隔开,
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略。
三、URI和URL之间的区别
从上面的例子来看,你可能觉得URI和URL可能是相同的概念,其实并不是,URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。
URL 和 URI 区别
本文我们讨论URL 和 URI 的主要区别,并通过示例说明这些差异。
URL 和 URI
直接差异来自其定义:
Uniform Resource Identifier (URI) − 对任何抽象或物理资源进行完整标识的字符序列。 Uniform
Resource Locator (URL) − 除了标识资源可用的位置之外,URI的一个子集描述了访问该资源的主要机制。
现在我们可以得出结论:每个URL都是一个URI,后面我们会看到情况并非如此。
语法
所有URI,不管其是否为URL,需遵循形式:
scheme:[//authority][/path][?query][#fragment]
1
每部分描述如下:
scheme − 对于 URL, 是访问资源的协议名称;对其他URI,是分配标识符的规范的名称
authority − 可选的组成用户授权信息部分,主机及端口(可选)
path − 用于在scheme和authority内标识资源
query − 与路径一起的附加数据用于标识资源。对于url是查询字符串
fragment − 资源特定部分的可选标识符
为了方便地识别特定的URI是否是URL,我们可以检查它的scheme。每个URL都必须从以下scheme开始:ftp、http、https、gopher、mailto、news、nntp、telnet、wais、file或prospero。如果不是以此开头,则不是URL。
现在我们已经了解了语法,让我们看一些示例。下面是uri列表,其中只有前三个是url:
ftp://ftp.is.co.za/rfc/rfc1808.txt
https://tools.ietf.org/html/rfc3986
mailto:john@doe.com
tel:+1-816-555-1212
urn:oasis:names:docbook:dtd:xml:4.1
urn:isbn:1234567890