我的Sinatra应用程序具有典型的文件层次结构: root包含:
file“hc.rb” 档案“endpoints.yml” dir“views” dir“public”
“view”包含.erb文件
公共目录包含:
file“style.css” dir“images”
在dir图片中我有favicon和404张照片。
这是代码的一部分:
not_found.erb
<center><img src="images/404.png" alt="404 Not Found"></center>
hc.rb
not_found do
erb :not_found
end
layout.erb
<!doctype html>
<html lang="en">
<head>
<title></title>
<link rel="icon" href="images/favicon.ico"/>
<meta charset="utf-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header>
</header>
<section>
<%= yield %>
</section>
</body>
</html>
当我输入localhost:[port] / smthnonexisting
时我在屏幕上显示404图像
但是当我输入其他级别时
本地主机:端口] / smthnonexisting / andsmthmore
我没有看到图像,我只看到404 Not Found和破碎的图像ico。
可能是什么原因?
由于
答案 0 :(得分:1)
原因是您正在使用相对于当前文件夹的路径。当您访问http://localhost/smthnonexisting
时,您的浏览器正在styles.css
查找/styles.css
文件。当您访问http://localhost/smthnonexisting/andsmthmore
时,您的浏览器正在styles.css
查找/smthnonexisting/styles.css
文件。
这可以通过/
之前的styles.css
保持与'root'文件夹相关的引用来解决,如下所示:
<link rel="stylesheet" href="/styles.css">
您还应该对favicon和任何其他包含的文件执行相同的操作:
<link rel="icon" href="/images/favicon.ico" />