.htaccess可以在这种情况下帮助我吗?

时间:2013-02-10 08:01:14

标签: file .htaccess

如果用户访问网址,请说:http://www.domain.com/image/orange.jpg 但是orange.jpg不存在,但是orange.png可以.htaccess允许用户找到它吗?

1 个答案:

答案 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来提供该请求,您可以在其中检查现有版本的图像,而无需使用急速并根据自己的喜好返回标题和内容。