ima*_*007 1 css3 internet-explorer-8 internet-explorer-7 css3pie
当我以两种不同的方式访问使用CSS3 PIE的站点时,在一种情况下找不到HTC文件.我正在使用示例域名和路径名来说明下面的问题.是什么导致这种情况发生?
http://sampledomain.com/site < - 在IE8中不呈现圆角
http://sampledomain.com/site/ < - 渲染圆角
CSS圆角文件位于
该网站包含来自的CSS文件
http://cdn.cdndomain.com/path/to/content/css/rounded-corners.css
CSS:
.rounded-corners
{
behavior: url(content/css/pie.htc);
}
Run Code Online (Sandbox Code Playgroud)
尽管你在这个问题的其他地方发表了评论,但这实际上并不是IE中的错误; 它完全理性地处理相对路径.
出现此问题的原因是因为就URL路径而言,两个URL(即带有和不带斜杠)实际上位于不同的目录中.
http://sampledomain.com/site- 这被视为site根目录中的文件名.
http://sampledomain.com/site/- 这被视为site根目录中的目录,并且您正在该目录中加载默认文件.
因此,就浏览器而言,这两个URL位于不同的目录路径中.因此,如果指定相对路径,则它将相对于每个路径中的不同路径,其中一个路径显然不会指向正确的位置.如果你有其他具有相对路径的项目,例如图像,它们也会有相同的问题,并且它将在所有浏览器中,而不仅仅是IE.(因此,我假设您在此页面上没有很多其他相对路径)
正如您已经解决的那样,快速解决方案是将其转换为绝对路径,从斜杠开始.这将确保从站点中的相同位置加载它,无论您从哪个URL加载它.
但是,这个问题暗示了一个更大的问题.行为良好的站点不应允许这两个URL有效.没有斜杠的URL应该使用斜杠重定向到URL; 它不应该简单地加载相同的内容,无论是否有斜杠.
允许两个URL加载相同的内容明显不利于您的网站的SEO.这意味着Google会将您的网站视为具有相同内容的两个网页,而这反过来又被视为您的Google排名的减号.
使用.htaccess/mod_rewrite很容易解决这个问题,理想情况下,您可以像原始CSS3Pie加载问题一样紧急解决此问题.
希望有所帮助.