apache SVG图像在某些Web服务器上不显示

jm2pwxwz  于 2023-02-16  发布在  Apache
关注(0)|答案(3)|浏览(204)

我在某些服务器上显示html文件中的.svg图像时遇到了问题。这让我很困惑,因为我认为这是由浏览器决定的,无论是否渲染svg图像,但浏览器保持不变。我使用以下字符串来显示它们:

<img src='path/to/image.svg' alt='image' />

在一台RHEL 6服务器上,它会显示,而在另一台RHEL 5服务器上,它不会显示。httpd的版本分别为2.2.15-9.el6和2.2.3-53.el5。Web浏览器与Google Chrome 12.0.742.122保持一致。服务器之间是否存在某些东西,将决定是否呈现svg图像?
错误日志不报告任何内容,访问日志给予.svg文件的状态设置为200和304。

i2loujxw

i2loujxw1#

SVG图像应该以MIME类型image/svg+xml提供,所以我建议先检查一下。检查所提供的MIME类型的一种方法是使用wget来获取图像。下面是wget的输出示例。注意它显示MIME类型的位置:

jacob@jacob-laptop:~/tmp$ wget http://croczilla.com/bits_and_pieces/svg/samples/butterfly/butterfly.svg
--2011-07-25 11:32:04--  http://croczilla.com/bits_and_pieces/svg/samples/butterfly/butterfly.svg
Resolving croczilla.com... 77.92.68.237
Connecting to croczilla.com|77.92.68.237|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31187 (30K) [image/svg+xml]
Saving to: `butterfly.svg'

100%[====================================================================>] 31,187      84.5K/s   in 0.4s

如果两种情况下的MIME类型都是image/svg+xml,那么我将比较两个文档的内容,看看它们之间是否有差异。
此外,虽然这并没有回答你的问题,但你也应该知道,并不是所有的浏览器都支持使用HTML img标签来呈现SVG。这是因为,通常情况下,img标签使用的安全性比object或embed标签要低。你可以在这里阅读更多信息:Reliably detecting tag support for SVG

nhhxz33t

nhhxz33t2#

jbeard4答案是正确的,但我想补充一下:为了解决这个问题,你必须让你的服务器以image/svg+xml的形式提供SVG图像。在Apache上,你可以通过在.htaccess中添加以下两行代码来实现这一点:

AddType image/svg+xml svg svgz
AddEncoding gzip svgz

通过http://kaioa.com/node/45

uwopmtnx

uwopmtnx3#

在此插入Apache选项

`<filesMatch "\.(svg|svgz)$">
    FileETag None
    <ifModule mod_headers.c>
        Header set Content-type "image/svg+xml"
    </ifModule>
</filesMatch>`

<Directory "/LocalServer/cgi-bin">的行之前

相关问题