如果用户访问网址,请说:http://www.domain.com/image/orange.jpg
但是orange.jpg
不存在,但是orange.png可以.htaccess允许用户找到它吗?
答案 0 :(得分:1)
这应该是可能的。 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
来提供该请求,您可以在其中检查现有版本的图像,而无需使用急速并根据自己的喜好返回标题和内容。