1
我在我的RewriteRule中有一个正则表达式,它目前工作正常。其次,我想测试一下文件(请求被重写的地方)是否存在。因此,我在我的规则之前放置了一个RewriteCond,但不幸的是,它始终验证为false。RewriteCond始终验证为false
这是我的正则表达式:
assets/img(.*)/([a-zA-Z0-9-_\.]*)\.([^/]+)\.([a-z]{2,4})
我创造了这个的.htaccess:
RewriteCond assets/img$1/.$2.$4/$3.$4 -s
RewriteRule ^assets/img(.*)/([a-zA-Z0-9-_\.]*)\.([^/]+)\.([a-z]{2,4})$ assets/img$1/.$2.$4/$3.$4 [NC,L,QSA]
RewriteRule ^assets/img(.*)/([a-zA-Z0-9-_\.]*)\.([^/]+)\.([a-z]{2,4})$ assets/img/image.php?path=$1&file=$2.$4&key=$3&ext=$4 [NC,L,QSA]
没有的RewriteCond,其中改写位置存在的请求,工作正常。对于那些谁感兴趣的话,我的完整的.htaccess被张贴在这里:http://pastie.org/1293667
假设我正确理解他的意图,向Jurian的第一个RewriteRule添加一个跳过标志(跳过1条规则)应该就足够了。 – outis 2010-10-27 13:04:46
感谢您的回答,这真的很有帮助!不幸的是,我注意到现在第一条规则(重写到图像的另一个位置)完全不起作用(例如,当条件和第二条规则被删除时)。尽管如此,直接请求(请参阅问题)仍然正常工作。有比错误标志更多的错误吗? – 2010-10-27 14:13:32
好的,我发现你的规则不起作用。我使用了mod_vhost_alias,因此DOCUMENT_ROOT不会更改为正确的值。有关于此的一个错误:https://issues.apache.org/bugzilla/show_bug.cgi?id=26052。无论如何,你的答案最终是正确的。 – 2010-12-22 11:37:51