【问题标题】:Serve diffrent CSS and JavaScript files with htaccess使用 htaccess 提供不同的 CSS 和 JavaScript 文件
【发布时间】:2012-06-01 23:39:20
【问题描述】:

在.htaccess 中使用RewriteRule 为不支持CSS3 的浏览器提供不同的CSS 和Javascript 会不会是个坏主意?如果有,为什么?

例如,我想为不完全支持 CSS3 的浏览器提供特殊的 CSS 和 Javascript。

我知道您可以在 HTML 中使用 <!--[if xx]>,但我认为在服务器级别这样做会更简洁。

请指导我。

我打算如何做的例子:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "MSIE 9" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 8" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 7" [or]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6"
RewriteRule the-file-for-all-other-browsers.css /css/style-for-ie-browsers-below-10.css [NC,L]

【问题讨论】:

  • 确定使用 PHP 检测浏览器并在 switch 语句中提供不同的文件会更有意义吗?
  • 您无法知道浏览器在服务器端的能力,因此不推荐使用用户代理嗅探。
  • ChrisW:我的情况不是这样。 lanzz:通过使用 RewriteCond %{HTTP_USER_AGENT} 我可以像使用

标签: javascript css .htaccess


【解决方案1】:

您打算如何使用.htaccess 进行此操作?嗅探用户代理字符串可能导致误报和generally isn't recommended。您应该使用Modernizr 之类的东西,然后您可以为不支持您正在寻找的某些功能的各种浏览器准备优雅的降级/插件。

还值得一提的是,使用<!--[if IE]--> 标签的开销最小,因为其他浏览器会忽略它们并且不会加载内容,它们也不会在使用类似用户代理字符串(指向 Opera)的浏览器上触发。

【讨论】:

  • 感谢 Dunhamzzz。我打算使用 RewriteCond %{HTTP_USER_AGENT} 和 RewriteRule 为旧浏览器提供其他文件(使用图像进行大量修复的更大文件)。我必须如何纠正旧浏览器才能以我想要的方式使用 CSS3:S
【解决方案2】:

我会说这是个坏主意。 .htaccess 重写将在每个请求上得到处理。这意味着对于图像、每个文件、所有内容。这是很大的开销,可能会导致网站速度变慢。

【讨论】:

  • 谢谢。那是个很好的观点。改用 javascript 的原因之一。
【解决方案3】:

考虑使用CSS3PIE,它为 IE 9,8 和 7 提供了 polyfills 以赋予它们 CSS3 功能。

【讨论】:

    【解决方案4】:

    我认为这很糟糕,因为您无法确定 htacess 中的功能支持。

    您不应该使用浏览器嗅探来提供优雅的降级,而应该在向浏览器显示高级功能之前确定浏览器是否支持所需的功能(渐进式增强)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      相关资源
      最近更新 更多