在这种情况下,访问可以帮助我吗



如果用户转到URL,请说:http://www.domain.com/image/orange.jpg但是orange.jpg不存在,但是orange.png存在,.htaccess能让用户找到它吗?

这应该是可能的。mod_rewrite允许检查文件是否存在。它允许多次重写,以防您没有使用[L]标志主动停止该过程。

因此,试着以这样的东西为起点(未经测试):

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/image/([^/.]).jpg$
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^/image/([^/.]).jpg /image/$1.png
RewriteCond %{REQUEST_URI} ^/image/([^/.]).png$
RewriteCond %{REQUEST_URI} !-f
RewriteRule - /image/no-found [G,L]

如果在中央服务器配置(每个主机配置)中定义,则以上内容适用。对于.htaccess风格的文件,语法略有不同:在这种情况下,RewriteRule中的前导斜杠(/)不得存在。如果您可以选择在服务器配置中进行重写。htaccess风格的文件类似于一种变通方法,而且非常容易出错。如果可能的话,尽量避开他们。

然而,请注意,这样的设置有些有限,维护起来很麻烦。通常,设置一个小包装脚本(可能是基于php的)来处理请求并在决定发送什么响应之前检查许多替代方案是更好的选择。您可以将请求重写为这样的内容:

RewriteEngine on
RewriteRule ^/image/([^/.])..+$ /image.php?name=%1

现在,您可以使用脚本image.php来满足该请求,在该脚本中,您可以快速检查现有版本的图像,并根据自己的喜好返回标题和内容。

相关内容

  • 没有找到相关文章

最新更新