1

我正在为站点开发动态缩略图生成功能,并且正在使用 mod_rewrite 功能对已生成的图像进行快速缓存。

我使用以下重写条件执行此操作:

RewriteCond  %{DOCUMENT_ROOT}%{REQUEST_FILENAME}    !-s
RewriteRule  ^/thumber/images/([0-9]+)_([0-9]+)_(.+)$  /thumber/thumbnail.cfm?src=$3&w=$1&h=$2  [PT,L,QSA]

第一行确保重写规则仅在请求的图像不存在时转发到我的脚本页面。

这在 Apache 2 中运行良好,但是当我使用 ISAPI Rewrite 3 Lite 将相同的规则移动到 IIS 服务器时,它总是表现得好像文件不存在一样,即使在已经生成缩略图的第一次重定向之后也是如此。

简而言之,由于某种原因,!-s标志似乎根本不起作用。我也尝试过!-f并且没有任何变化。

我在想也许这个版本的 ISAPI Rewrite 正在使用某种缓存信息来确定文件是否存在。

除此之外,我不明白为什么它适用于 Apache 而不是 ISAPI。

请帮忙!

谢谢

4

1 回答 1

1

好的,我发现了问题!

这一切都归结为权限问题。ISAPI 重写进程没有足够的权限来读取我在其中写入生成的缩略图 (/thumber/images/) 的文件夹的内容,因此它假定该文件不存在。

解决方案是将正确的权限分配给正确的用户。

我只是按照这篇博文中的步骤操作:

http://vbscriptautomation.net/29/wordpress-permalinks-isapi-rewrite-3-windows-plesk/

谢谢

于 2013-01-18T23:54:20.087 回答