【问题标题】:What HTTP header indicates when Index.html has been served?什么 HTTP 标头指示何时提供 Index.html?
【发布时间】:2013-09-10 00:22:07
【问题描述】:

请原谅尴尬的标题:我正在构建一个简单的网络服务器(不要问...)并且有这个问题:

浏览器请求mydomain.com/MyFolder

我的服务器发现这是一个文件夹,所以转而提供mydomain.com/MyFolder/index.html

到目前为止一切正常,除了 index.html 有指向 mycss.css 的链接,但浏览器将其作为顶级文件 mydomain.com/mycss.css 而不是 mydomain.com/myFolder/mycss.css 请求。

是否有一些 HTTP 标头需要设置以指示已提供不同的页面?我尝试返回 Content-Location: /myFolder/index.html,但没有任何明显的成功。

index.html 基本上包含这个:

<link rel="stylesheet" href="mycss.css" />

【问题讨论】:

  • 恐怕http头在这里没有用,但是base标签可能对你有帮助。
  • @kirilloid - 所以你说这是一个 HTML 问题而不是服务器问题?是不是每个服务器都受此影响?
  • 您是否尝试过返回 301 Moved Permanently 状态而不是 200 ok?然后发送 Location 标头并将斜杠添加到 URL 的末尾。喜欢:Location: mydomain.com/MyFolder/ 并且暂时不提供 index.html,浏览器将在 url 末尾使用斜杠再次请求,然后您才提供 de html 文件
  • @Delta,完美,谢谢。把它作为一个答案,我会接受的。

标签: http-headers


【解决方案1】:

返回301 Moved Permanently 状态代码,而不是200。 提供指向相同 url 的 Location 标头,并在末尾添加一个斜杠 /

像这样:

Location: mydomain.com/MyFolder/

不要在同一个请求中提供index.html 文件,等待浏览器再次请求,并以斜线结尾。

【讨论】:

  • 这是正确的做法。使用任何 HTTP 流量查找工具,可以看出这就是当前 Web 服务器所发生的情况。不过,您需要包含完整的网址,所以它就像Location: http://mydomain.com/MyFolder/
  • 谢谢 - 在实现这一点时(显然,我的代码中存在错误)由于 301 缓存,我遇到了一个问题,所以现在切换到 302 ......这里还有更多:getluky.net/2010/12/14/301-redirects-cannot-be-undon
【解决方案2】:

或者只是尝试将这样的内容添加到您的 .htaccess 文件中:

RewriteEngine On
RewriteBase /

RewriteRule   ^(.+)$ myFolder/$1

【讨论】:

  • 我没有 .htaccess 文件 ;-)
【解决方案3】:

你能不能试着改变一下:

<link rel="stylesheet" href="mycss.css" />

到这里:

<link rel="stylesheet" href="/myFolder/mycss.css" />

?

【讨论】:

  • 然后尝试在路径中添加前导斜杠:&lt;link rel="stylesheet" href="/myFolder/mycss.css" /&gt;
  • 绝对路径意味着东西很难移动。然后我无法重命名文件夹而不编辑它们的内容。
  • 答案是 - 创建您的 .htaccess 文件,就是这样。
【解决方案4】:

好的,实际上给出的信息不正确,所以我正在修改答案。如果您正在实施 Web 服务器,则必须遵循标准规范。定义&lt;link rel="stylesheet" href="mycss.css" /&gt; 应从与在 (index.html) 中定义的文件相同的位置检索 CSS 文件。当使用相对路径时,不是浏览器从特定位置请求,而是网络服务器应该确定从哪个位置提供资源。

查看标准文档中的第 2.4.6 和 3 节:http://www.ietf.org/rfc/rfc1808.txt

换句话说,如果资源的路径不以斜杠 (/) 开头,则它被认为是相对的,应该相对于基本 URL。

【讨论】:

  • 那么./mycss.cssmycss.css 不同吗?
猜你喜欢
  • 1970-01-01
  • 2012-11-07
  • 2012-06-27
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2013-12-25
  • 2017-08-26
相关资源
最近更新 更多