File 在这种情况下,htaccess能帮我吗?

File 在这种情况下,htaccess能帮我吗?,file,.htaccess,File,.htaccess,如果用户转到URL,请说: 但是orange.jpg不存在,但是orange.png存在,那么.htaccess是否允许用户找到它?这应该是可能的。mod_rewrite允许检查文件是否存在。如果您没有使用[L]标志主动停止该进程,它允许多次重写 因此,请尝试以下内容作为起点(未经测试): 如果在中央服务器配置(每个主机配置)中定义,则上述内容适用。对于.htaccess样式的文件,语法略有不同:重写规则中的前导斜杠(/)在这种情况下不得出现。如果您有选择,请在服务器配置中进行重写。htacce

如果用户转到URL,请说:
但是
orange.jpg
不存在,但是orange.png存在,那么.htaccess是否允许用户找到它?

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

因此,请尝试以下内容作为起点(未经测试):

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

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

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

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

没有;htaccess不使用每个请求的可能结果列表;为什么你会回显一个无效的url,但仍然想找到正确的url?也许启用可以解决这个问题。+1的想法。但是,第一条规则可能是在请求的文件存在时更改其扩展名,如果不存在,则不获取另一个具有不同扩展名的文件。不过,我不确定这是否是你的意图。@faa对不起,我不明白你的意思。如果jpg变体不存在,第一条规则打算将“扩展名”从
.jpg
tp
.png
更改。这是OP要求的。为什么不应该交付png变体呢?根据规则,只有当请求的扩展名为
jpg
的文件存在时,才会交付
png
变体。这是规则要求的一个积极条件,
^/whatever…
,其中必须存在
whatever
。也许你的意思是
^/不管怎样…
@faa Hm?为什么?我错过了一些东西。。。第一个条件只考虑在实际需要jpg时应用规则。第二个条件明确检查只有当文件不存在时才应用规则(注意
,一个否定)。规则本身不检查任何文件,它只执行字符串操作。完全同意。我并不是在暗示规则是错误的,我只是想知道为什么会有两个相同的匹配条件,并假设第一个匹配条件试图验证文件的存在,因为重写规则中的正则表达式也会这样做(尽管删除了尾随的斜杠)。我只是想确定第一个条件的意图。但是,这是非常清楚的。
RewriteEngine on
RewriteRule ^/image/([^/.])\..+$ /image.php?name=%1