【问题标题】:Do browsers ignore suffixes?浏览器会忽略后缀吗?
【发布时间】:2017-10-09 21:05:39
【问题描述】:

错误地,我在检查我的网站时将 URL 写入浏览器时没有添加后缀 .php。浏览器忽略了它并简单地返回页面,就好像我添加了.php 后缀一样,无论如何!这是正常的吗?是否所有现代浏览器都会看到像 www.website.com/thispage 这样的 URL,然后直接转到 thispage.phpthispage.html(如果存在)?

【问题讨论】:

  • 这不是你的浏览器做的,你的网站只是处理两个 url。
  • 浏览器对后缀一无所知。它只是将 URL 发送到服务器。

标签: php html url redirect url-redirection


【解决方案1】:

请求转到服务器。

浏览器地址栏中的任何基本 URL 都会向域(或主机名)定义的服务器发出 HTTP 请求。因此,http://www.something.com/here/there.x 向为something.comwww 子域注册的 IP 发送一大堆信息(在请求的“HEADER”中)。该服务器获取请求,该请求在标头中包含有关您的浏览器、IP、请求类型、请求的完整地址、表单中提交的任何数据等信息。

您的服务器的 http 引擎决定如何处理它

Apache、nginx、iis 是不同类型的 HTTP 服务器,它们的全部目的是侦听此类请求,并决定如何处理它们。

通常,这包括设置一定程度的默认值,例如:

  1. 将域与目录匹配
    • something.com:/var/www/site1
    • 奇异网:/var/www/site2
    • 默认:/var/default
  2. 将路径(所有之后域后面的“/”)与文件匹配
    • 检查匹配的.html 文件
    • 检查匹配的.php 文件
  3. 检查权限和身份验证
  4. 根据配置执行文件
    • 将 php 文件发送到 php 进程,并重新路由输出
    • 简单地抓取和转储图像、txt 和 html 文件的内容。
  5. 根据刚刚执行的内容发送响应。

这是 大大地 简化的,并且有 很多 层和细节,但我尽量保持简单问题。

你告诉 apache(或其他)该做什么。

Apache 可以配置为在任何人请求`http://blah.something.com/[anything]/*.g​​ood 时返回风格化的 google 搜索猫。根据您发送的网址,它可以配置为执行您想要执行的任何操作。浏览器只决定发送什么。

【讨论】:

  • 当我问 Onyx 时,这是否意味着当服务器返回“www.blah.com/blah.php”时,我只要求“blah.com/blah”,无论使用哪个浏览器用过的?另外,喜欢猫的例子!
  • 可能,但重要的是要注意,服务器可以配置为对任何类型的文件执行此操作,甚至生成它自己的 HTML 响应来列出文件夹。此外,可以将其配置为根据请求中的内容(浏览器、IP、身份验证等)更改其行为,例如它将为 mac 呈现 php 文件,为 pc 呈现 html。
【解决方案2】:

如何处理 URL 完全取决于 Web 服务器和配置。 Web 服务器,如 Apache、NGinx、Cherokee、Litespeed 等,都有不同的机制来处理当 URL 请求命中它时会发生什么,然后它决定做什么。 例如,您可以让您的 Web 服务器尝试将 .php 和 .htm 和 .html 后缀添加到请求的 url,以便尝试提供帮助。或者只是提供 404 页面,或者将请求发送到主页 - 例如 index.php。

【讨论】:

  • 那么,如果服务器为一个浏览器执行此操作,它是否为所有浏览器执行此操作?根本与浏览器品牌或版本无关?
  • 通常情况下,是的,除非相关浏览器有某种奇怪的插件,会在通过的过程中破坏请求......但你不能涵盖所有这样的边缘情况。仅供参考:一些较旧的浏览器,尤其是 IE,在压缩(例如 gzip)或图像显示(透明 PNG)等方面存在问题,但在 URL 请求方面没有问题。因此请注意,并非所有浏览器和版本都是平等的。
猜你喜欢
  • 1970-01-01
  • 2015-02-19
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
相关资源
最近更新 更多