这取决于您运行的服务器类型。
静态网络服务器
如果它是最简单的静态文件服务器,没有 URL别名或重写,那么 URL 将直接映射到文件:
如果您的“网络根目录”是/home/youruser/www/
,那么这意味着:
http://www.example.com -> /home/youruser/www/
并且任何路径(域名之后的所有内容)都直接转换为该 Web 根目录下的路径:
http://www.example.com/about.html -> /home/youruser/www/about.html
如果没有指定文件(即 URL 以 a 结尾),通常 Web 服务器会自动查找“index.html”文件/
:
http://www.example.com/ -> /home/youruser/www/index.html
http://www.example.com/about/ -> /home/youruser/www/about/index.html
在 Apache 中,搜索的文件名可以使用DirectoryIndex
指令进行配置:
DirectoryIndex index.html index.txt /cgi-bin/index.pl
这意味着对以 a 结尾的路径的每个请求/
(并添加另一个规则,在某些常见设置下,如果路径是目录的名称,它将自动附加a ,例如“关于”):/
http://www.example.com/ -> /home/youruser/www/index.html
-> or /home/youruser/www/index.txt
-> or /home/youruser/www/cgi-bin/index.pl
具有路径解释的 Web 服务器
执行此功能的服务器类型太多,无法全部列出,但基本思想是程序捕获对服务器的请求,然后程序根据路径决定输出什么。
例如,一个程序可能会为基本匹配规则执行不同的路由:
*.(gif|jpg|css|js) -> look for and return the file from /home/user/static
blog/* -> send to a "blog" program to generate the resulting page
using a combination of templates and database resources
示例包括:
HTML 页面中的链接
最后,HTML 页面中的链接只是更改了地址栏的 URL。无论服务器上存在什么,HTML 链接的行为都是相同的。反过来,服务器只响应 HTTP 请求,只生成浏览器使用的资源(HTML、图像、CSS、JavaScript 等)。服务器只为这些资源提供服务,与它们没有任何特殊的行为链接。
- 绝对 URL是那些以方案开头的URL (例如
http:
您所做的)。当用户单击链接时,位置栏的全部内容将被替换。
- 域相对 URL是那些以正斜杠 (
/
) 开头的 URL。域名之后的所有内容都将替换为此链接的内容。
- 相对 URL就是其他一切。URL中最后一个目录 (
/
) 之后的所有内容都将替换为此链接的内容。
例子:
<a href="http://www.example.com/about/">Example.com about</a>
我在“mydomain.com”上的页面可以像您所做的那样链接到您的站点。
- 如果我将链接更改为,
<a href="/about">about</a>
那么它将链接到mydomain.com
。
回答你的问题
我的 html 文件(大概称为 about.html)如何知道它的 URL 是“ http://www.example.com/about/ ”?
首先,文件本身不知道它的 URL 是什么。除非:
- HTML 是使用程序动态生成的。大多数服务器端语言都提供了一种方法来实现这一点。
- 提供页面后,客户端脚本还可以检测当前 URL
其次,如果 URL 是/about
并且文件实际上是,about.html
那么您可能正在进行某种重写。 请记住,最简单的路径是直译,/about
与about.html
.