我的项目有这个结构:
Root Directory
|-css folder
|-style.css
|
|-it folder
|-index.html
如果我尝试将css文件包含在:
中<link href="/css/style.css" rel="stylesheet" type="text/css"/>
从index.html,aptana预览以及内部服务器找不到style.css。 为什么是这样? 在我的远程服务器中它完美运行,我不想使用相对路径。
答案 0 :(得分:2)
就“原因”而言,您遇到的问题与开发服务器的设置方式和生产服务器有关。
假设采用标准设置,您的生产服务器将接收域的请求(即http://mysite.com),因为缺少更好的词,映射到服务器上的文件夹(即请求{ {3}}将映射到服务器上的文件夹/ var / www / mysite。
因此,当您使用/css/style.css链接到样式表时,您的(生产)服务器会立即转到/ var / www / mysite文件夹并开始查找css文件夹,文件等。正如你所指出的,没有问题。
但是,您的开发计算机在本地提供页面,并具有不同的目录结构,用于映射到文件和文件夹。
当我在Aptana项目中打开HTML页面并点击预览按钮时,Studio会加载http://mysite.com(请注意IP和端口之后的第一个文件夹是如何形成的)。要加载绝对路径的CSS文件,本地服务器实际上正在寻找http://127.0.0.1:8020/mysite/public/404.html,但它需要到达http://127.0.0.1:8020/css/styles.css。
链接中的初始“/”(/css/styles.css)告诉服务器转到服务器的根目录,并从那一点开始查找文件夹和文件......但是没有css本地服务器根目录中的文件夹。它位于/mysite/css/styles.css中,这就是fskreuz建议相对路径并使用“../css/styles.css”的原因。
就个人而言,我更喜欢绝对的链接(但这只是个人偏好,对fskreuz的回应绝不是挑战或评论)。但是,我的本地开发设置有助于使用它们,因为我为我工作的站点设置了虚拟主机。使用Apache,我为每个项目设置了一个虚拟主机。有了这个,我可以在我的计算机上的任何浏览器中加载类似http://127.0.0.1:8020/mysite/css/styles.css的内容,并以一种使其镜像我的生产设置的方式测试我的网站/应用程序。