0

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

浏览器请求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" />
4

4 回答 4

1

返回301 Moved Permanently状态码,而不是200. 提供指向相同 url 的 Location 标头加上最后的斜杠 /

像这样:

Location: mydomain.com/MyFolder/

不要index.html在同一个请求上提供文件,等待浏览器再次请求,最后带有斜杠。

于 2013-09-09T16:09:48.927 回答
-1

你能试着改变一下吗:

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

对此:

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

?

于 2013-09-09T15:36:32.947 回答
-1

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

RewriteEngine On
RewriteBase /

RewriteRule   ^(.+)$ myFolder/$1
于 2013-09-09T15:41:12.563 回答
-1

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

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

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

于 2013-09-09T15:51:31.743 回答