【问题标题】:.htaccess Rewrite Engine ON, show no_image.png in URL.htaccess 重写引擎开启,在 URL 中显示 no_image.png
【发布时间】:2013-04-20 05:29:36
【问题描述】:

为了通过 .htaccess 显示no_image.png(如果图像不存在),我使用:

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /images/no_image.png [L]

但是,这不会解析以下 URL 格式的图像:

www.domain.com/t.php?src=p/dd5e5b08_1.jpg

如果在上面的示例 URL 中未检测到图像,我想通过 .htaccess 显示no_image.png 请提供解决方案,谢谢

【问题讨论】:

    标签: php .htaccess url rewrite


    【解决方案1】:

    REQUEST_URI 不包含您的 URL 的 QUERY_STRING 部分,因此您的 .htaccess 规则不适用于此。我看到您正在通过 php 脚本调用图像,所以我建议您检查该图像文件是否存在于您的 php 脚本中,如果不存在,则重定向或写出 no_image.png 内容。

    t.php 的简单代码:

    <?php
    
    if (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_GET["src"])) {
      header("Location:".$_GET["src"]);
    } else {
      header("Location:/images/no_image.png");
    }
    
    ?>
    

    或者您也可以使用header('Content-Type: image/png')echo 图像文件内容

    【讨论】:

      【解决方案2】:

      REQUEST_URIt.php 结尾,而不是图像扩展名,因为查询字符串不是 URI 的一部分,因此不会被您的重写规则检查。您应该使用%{QUERY_STRING} 来检查查询字符串。

      如果 url 是 http://www.domain.com/p/dd5e5b08_1.jpg 并且 /p/dd5e5b08_1.jpg 在服务器上不存在,您将获得 /images/no_image.png 而不是您当前的规则。

      也就是说,您似乎正在使用 PHP 加载图像,在这种情况下,使用 PHP 来确定文件是否存在并在不存在时提供默认值是合适的,而不是 .htaccess 文件.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 2020-07-20
        相关资源
        最近更新 更多