我们希望提供一个图像,因为apache非常擅长,当客户端请求缩略图时,请求将如下所示:[ http://host/photos/im/image_w200.jpg] (w200是请求缩略图的宽度)。
有时缩略图不会存在。 当它们不存在时,我们希望apache将请求转发给我们的应用程序。 该请求看起来像[ http:// host / create_thumbnail?file = image_w250.jpg] 。 该应用程序将创build缩略图,并redirect回原始请求。
当我在/ home / dev / x / y / mediadir中有正常的文件和目录时,这工作正常。 但是/ home / dev / x / y / mediadir / photos现在是/ home / dev / photos目录的符号链接。 所以,现在,即使文件存在,它总是通过!-f RewriteCond并重写缩略图。
我已经尝试过的事情:
任何人有任何build议?
<VirtualHost *:443> #... cut ... RewriteLog /home/dev/logs/rewrite.log RewriteLogLevel 3 Alias /media/ /home/dev/x/y/mediadir/ <Directory /home/dev/x/y/mediadir> Order allow,deny Allow from all Options FollowSymLinks RewriteEngine on RewriteCond photos/../$ !-f RewriteRule ^photos/../(.+)$ https://%{HTTP_HOST}/create_thumbnail?file=$1 </Directory>
而不是使用一个RewriteCond photos/../$ !-f ( RewriteCond photos/../$ !-f ),我用了两个。 第一个检查REQUEST_FILENAME是否匹配正则expression式,第二个检查文件是否不存在。 这对我来说很好。
RewriteCond %{REQUEST_FILENAME} photos/../.+ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^photos/../(.+)$ https://%{HTTP_HOST}/create_thumbnail?file=$1
我有点困惑你的path是什么,因为你指的是/ mediadir,但没有/ mediadir(从根引用,而不是在文件系统,也没有在Apache)。 所以我不知道你的意思,但也许你可以通过添加以下方法来解决它:
<Directory /path/to/photos/> Order allow,deny Allow from all </Directory>
你的重写日志说什么?