【问题标题】:Show no_picture.png by .htaccess if picture is not exist如果图片不存在,则通过 .htaccess 显示 no_picture.png
【发布时间】:2010-11-26 17:37:20
【问题描述】:

如果请求的图片不存在,我想显示 no_picture.png。我应该用.htaccess 来做。非常感谢。

【问题讨论】:

    标签: .htaccess redirect http-status-code-404 rewrite


    【解决方案1】:
    RewriteEngine On
    RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .*$ /no_picture.png [L]
    

    让我们分解一下每一行的含义。

    RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
    

    检查请求的文件是否具有括号 () 中的文件扩展名。在这种情况下,我们正在测试文件名是否以.jpg.jpeg.gif.png.ico 结尾

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    

    检查文件是否不存在,也不是目录。

    RewriteRule .*$ /no_picture.png [L]
    

    如果请求的资源/文件通过了所有这些测试,那么它就是一个不存在的图像。因此,将no_picture.png 的图像返回给浏览器。这将保留文件名。如果要重定向到no_picture.png 文件名,请将[L] 更改为[R]

    【讨论】:

      【解决方案2】:

      这也应该有效:

      <FilesMatch "\.(jpg|jpeg|png|gif)$">
      ErrorDocument 404 "/no_picture.png"
      </FilesMatch>
      

      【讨论】:

        【解决方案3】:

        在您的 /images/ 目录中,将其添加到您的 .htaccess 中

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule no_picture.png [L]
        

        也就是说,如果请求的文件不存在,则将其重写为 no_picture.png

        【讨论】:

        • 不会包含不存在的 HTML 或其他文件类型吗?
        • 是的,它可以用于任何事情。这就是为什么我提到它是针对特定图像目录的。可以将其更改为仅匹配某些文件扩展名(正如其他答案所做的那样)。
        【解决方案4】:
        RewriteCond %{REQUEST_URI}  pic/(.*)
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule pic/(.*)            pic/no_picture.png [L,E=STATUS:404]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-29
          • 1970-01-01
          • 2022-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-23
          • 1970-01-01
          相关资源
          最近更新 更多