Appearance
helloweb
元信息
- 目标:架起自己的第一个 Web 站点——把 hello.html 放进 htdocs 即可被访问,由此理解 document root(URL 到磁盘路径的映射)、默认网页(DirectoryIndex)与纯文本配置文件三个机制
- 关键概念:网站根目录(DocumentRoot)、默认网页、DirectoryIndex、httpd.conf、配置文件、404
- 关联阶段:cp1
- 常见误区:以为访问的是"站点"这个抽象物(访问的总是根目录下的具体文件,
/会被导向默认网页);改了 DocumentRoot 却不同步改<Directory>权限(报访问权限不足);改完配置不重启 Apache(改动不生效)
hello web
在自己的电脑上架设一个简单的Web站点
配置第一个WEB站点
切换至 d:\xampp\htdocs\文件夹,新建一个文件:hello.html,内容为:
打开浏览器,访问http://127.0.0.1/hello.html, 出现你刚才输入的“hello world!”,即第一个你的站点架设成功
你可在该目录下添加更多文件,并一一测试!
知识点:document root
d:\xampp\htdocs\ 是apache服务默认的网站根目录(document root)。当你访问http://127.0.0.1/hello.html时,Web服务器就会将这个网络地址转换为本地的磁盘地址,即对应的网站根目录下的对应文件,d:\xampp\htdocs\hello.html
参考阅读:Apache 文档——DocumentRoot 指令(网站根目录的完整定义)
知识点:默认网页
如果你直接访问http://127.0.0.1 ,不附上任何文件名,则会看到xampp的欢迎页面(实际上是d:\xampp\htdocs\index.php的输出结果)。这是因为,Web服务器(此处为apache)有一个默认设置 1、Web服务器总是会将http://127.0.0.1 转换成 http://127.0.0.1/,这里的/即上述的文档根目录。换言之,你不可能访问一个抽象的站点,而总是访问站点上的某个具体目录。 2、同理,你也不可能访问一个抽象的目录,而总是需要访问一个具体的页面或文件。因此,如果/后面没有明确指定一个页面,Web服务器就会去该目录下寻找/index.html或/default.html或/index.php之类的文件,如果找到,则返回给浏览器显示;如果未找到,则通常会报错'404 not found'
参考阅读:Apache 文档——DirectoryIndex 指令(默认页面查找顺序的完整定义)
自定义Web站点根目录
默认的网站根目录位于xampp的安装目录下,如d:\xampp\htdocs\。你也可以自定义该目录的位置:
修改apache配置文件d:\xampp\Apache\conf\httpd.conf,可将网站根目录设置为任何位置,如: d:\server\www
改动之前
apache
# 在配置文件中找到`DocumentRoot`的配置项,需要改动两行,将原来的`/xampp/htdocs`更改为新目录,如:`/server/www`
DocumentRoot "/xampp/htdocs"
<Directory "/xampp/htdocs">改动之后
apache
# 设置文档根目录
DocumentRoot "/server/www"
# 为文档根目录设置权限等,务必同步更改,否则会报访问权限不足的错误
<Directory "/server/www">
# 务必重启apache
/server/www是网络路径格式。转换为windows的磁盘路径,即/表示当前磁盘根目录,完整路径就是d:\server\www
知识点:配置文件
d:\xampp\Apache\conf\httpd.conf是一个典型的纯文本的配置文件,apache使用它来规定自身的行为或功能,用户可以修改该配置文件来控制或定制apache的行为。该配置文件的语法格式遵循 ini 类型的配置语法
- 每一行代表一个配置项
- 行首的
#表示注释,供用户理解,无配置作用 - 每一个配置项一般由两段组成,中间用空格分隔。以
DocumentRoot "d:\xampp\htdocs",前半段为指令,后半段为值,中间由空格分隔
参考阅读:Apache 文档——配置文件(指令、值与注释的完整语法说明)
注:更改任意配置后,请务必重启apache
注意,更改网站根目录,将导致xampp内置的phpmyadmin(后续安装wordpress时需要用到)暂时无法使用,解决方式请参见后文
虚拟站点。
访问自定义根目录
切换至 d:\server\www文件夹,新建一个文件:index.html,内容为:
打开浏览器,访问http://127.0.0.1, 出现你刚才输入的内容。即表示成功
还记得前面提到过默认网页吗?