请原谅这个尴尬的标题:我正在构建一个简单的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" />
答案 0 :(得分:1)
返回301 Moved Permanently
状态代码,而不是200
。
提供指向同一网址的Location标头以及结尾/
像这样:
Location: mydomain.com/MyFolder/
不要在同一个请求上提供index.html
文件,等待浏览器再次使用斜杠请求。
答案 1 :(得分:-1)
你能不能试着改变这个:
<link rel="stylesheet" href="mycss.css" />
到此:
<link rel="stylesheet" href="/myFolder/mycss.css" />
答案 2 :(得分:-1)
或者只是尝试将这样的内容添加到.htaccess文件中:
RewriteEngine On
RewriteBase /
RewriteRule ^(.+)$ myFolder/$1
答案 3 :(得分:-1)
好的,实际上给出的信息不正确所以我正在修改答案。如果要实现Web服务器,则必须遵循标准规范。定义<link rel="stylesheet" href="mycss.css" />
将从与(index.html
)中定义的文件相同的位置检索CSS文件。使用相对路径时,不是从特定位置请求的浏览器,而是Web服务器应确定从中提供资源的位置。
检查标准文件中的第2.4.6和3节:http://www.ietf.org/rfc/rfc1808.txt
换句话说,如果资源的路径不是以斜杠(/)开头,则将其视为相对路径,并且应相对于基本URL定位。