Mod rewrite mod_重写阻止在mod_自动索引上显示正确的文件类型图标

Mod rewrite mod_重写阻止在mod_自动索引上显示正确的文件类型图标,mod-rewrite,apache2,mod-autoindex,Mod Rewrite,Apache2,Mod Autoindex,我似乎有一个我一直在努力解决的问题。我想在这里得到一些帮助。 我有一个垃圾场,我正在使用mod_autoindex和FancyIndexing 我在我的.htaccess文件中定义了我的FancyIndexing图标。我还使用mod_rewrite通过几个php脚本传递文件(取决于文件扩展名) 一切都很好,除了在重写规则上匹配文件扩展名外,Apache只显示它的默认图标,而不显示指定的图标 所有FancyIndexing资源都在/imgindex目录下,所有查看器都在/viewers目录下 这是

我似乎有一个我一直在努力解决的问题。我想在这里得到一些帮助。 我有一个垃圾场,我正在使用
mod_autoindex
FancyIndexing

我在我的
.htaccess
文件中定义了我的
FancyIndexing
图标。我还使用
mod_rewrite
通过几个php脚本传递文件(取决于文件扩展名)

一切都很好,除了在
重写规则
上匹配文件扩展名外,Apache只显示它的默认图标,而不显示指定的图标

所有
FancyIndexing
资源都在
/imgindex
目录下,所有查看器都在
/viewers
目录下

这是
.htaccess
文件的相关部分(我目前正在对其进行调整,因此未对其进行优化):

正如我所说的,除了图标之外,一切似乎都很好。在上述情况下,所有
.css、.cs、.cpp
、(等)和所有
.jpg
文件将使用
默认图标中定义的图标,而不是其文件类型(在
AddIcon
中定义)的图标

如果删除与该文件类型匹配的
重写规则
,将显示正确的图标

这是正常的、预期的行为吗?有没有办法覆盖它,如果有的话


你好,

好的,看来我找到了原因。出于某种原因(bug?),mod_rewrite是重新映射mod_autoindex使用的所有apr_read_dir()调用(我最后查看了mod_autoindex源代码)。因为它被认为是mapper模块上的一个子请求,所以作为一种解决方法,我刚刚添加了一个:

RewriteCond %{IS_SUBREQ} false
对每一条规则进行重写,它神奇地发挥了作用。当然,这只是一种变通方法,因为如果您确实需要在子请求上使用重写规则,这可能不适合您

我确信这是mod_autoindex上的一个bug,因为图标和/或描述的文件名绝对没有理由与实际打印输出数据的文件名不同


不过可能有一些模糊的原因。

好吧,看来我找到了原因。出于某种原因(bug?),mod_rewrite是重新映射mod_autoindex使用的所有apr_read_dir()调用(我最后查看了mod_autoindex源代码)。因为它被认为是mapper模块上的一个子请求,所以作为一种解决方法,我刚刚添加了一个:

RewriteCond %{IS_SUBREQ} false
对每一条规则进行重写,它神奇地发挥了作用。当然,这只是一种变通方法,因为如果您确实需要在子请求上使用重写规则,这可能不适合您

我确信这是mod_autoindex上的一个bug,因为图标和/或描述的文件名绝对没有理由与实际打印输出数据的文件名不同

不过,可能有一些模糊的原因。

除了“mistery”(或我做错的任何事情)之外,我还试图向其中一个文件添加一个描述(即AddDescription“whatever”文件名),但它也不显示是否符合重写规则。在“mistery”(或我做错的任何事情)中添加说明,我尝试向其中一个文件添加说明(即AddDescription“whatever”文件名),但它也不会显示是否与重写规则匹配。如果不是这样的话,效果会非常好。