web.xml配置
<error-page> <error-code>404</error-code> <location>/404.html</location> </error-page>
404.html里
<link href="css/404.css" rel="stylesheet" type="text/css" />
404.css里
background: url(../images/404.png)
所以文件结构是
myapp/404.html
myapp/css/404.css
myapp/images/404.png
现在的问题是当我访问http://localhost/myapp/path/not/found/xx/...这样的地址时候404.html是可以返回的,但是找不到css,求教!
这种URL千变万化的情况,要么用绝对路径引用css,要么直接将css直接写在html中。
如果使用绝对路径,就不能放程序放在虚拟目录中,要放在根目录下。
我只是想有人告诉我我不知道的方式,或者告诉我说你只能这么做,谢谢园长,另外,为什么回复时候的第一次按键会被撤销呢?
@jieyuefeng: 我这里没遇到过这个问题,你用的是什么浏览器?
../ 去掉
css里面的路径是基于css文件的
你说是css里引用图片是吧,css文件和图片文件本就不在一个目录里啊,相对路径也就是../images,但现在的问题其实是html还找不到css
myapp/css/404.css
就是说,假设myapp在根目录,你的文件在 myapp里面的css里面的404.css
路径就是: /myapp/css/404.css
<link href="/myapp/css/404.css" rel="stylesheet" type="text/css" />
试试吧...
这样肯定是行的,但这样的问题是我在404.css里面并不知道我当前在myapp的目录,因为可能直接把myapp部署在ROOT下,或是其他名字下
<link href="../css/404.css" rel="stylesheet" type="text/css" />
试试吧, 如果有用记得采纳, 没用的话就继续追问。追问的时候请附上项目的文件物理路径结构图。
参照dudu的回答
/myapp/css/404.css
/myapp/images/404.png
在php里面设置变量
$app="/myapp";
echo $app."/css/404.css"
不是php呀
@jieyuefeng: 哦jsp也类似
@xmodygetz: 我只是想说$app="/myapp"这句话,这个名字取决于我把项目部署在哪个目录下,所以我想避免这种生硬的写法
@jieyuefeng: application.getRealPath
@xmodygetz: 静态网页
@jieyuefeng: 还是直接用cdn吧
直接用<link href="/css/404.css" rel="stylesheet" type="text/css" />吧,和你css当前在哪个目录下没关系的,你测试的时候要用IIS新建一个站点,而不是在默认站点下添加一个应用程序.因为/开关的路径是相对站点根路径的.
参照dudu的回答