.htaccess RewriteCond验证始终为false

.htaccess RewriteCond验证始终为false,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我的重写规则中有一个正则表达式,目前运行良好。其次,我想测试文件(请求重写的地方)是否存在。因此,我在规则之前放置了一个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-z

我的重写规则中有一个正则表达式,目前运行良好。其次,我想测试文件(请求重写的地方)是否存在。因此,我在规则之前放置了一个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的请求(其中存在重写位置)正常工作。对于那些感兴趣的人,我的complete.htaccess发布在这里:

问题是
RewriteCond
只适用于紧随其后的规则,因此您的第二个
RewriteRule
始终运行。一个解决方案


问题是,
RewriteCond
只适用于紧跟其后的规则,因此第二个
RewriteRule
始终运行。一个解决方案


在Jurian的第一条重写规则中添加一个跳过标志(跳过1规则)就足够了,假设我正确理解他的意图。谢谢你的回答,这真的很有帮助!不幸的是,我现在注意到第一条规则(重写到图像的另一个位置)根本不起作用(例如,当条件和第二条规则被删除时)。尽管如此,直接请求(见问题)仍然可以正常工作。有更多的错误不仅仅是跳过标志?好吧,我找到了你的规则不起作用的原因。我使用了mod_vhost_别名,因此DOCUMENT_ROOT没有更改为正确的值。有一个关于此的错误文件:。无论如何,你的答案最终是正确的。在Jurian的第一条重写规则中添加一个跳过标志(跳过1规则)就足够了,假设我正确理解他的意图。谢谢你的回答,这真的很有帮助!不幸的是,我现在注意到第一条规则(重写到图像的另一个位置)根本不起作用(例如,当条件和第二条规则被删除时)。尽管如此,直接请求(见问题)仍然可以正常工作。有更多的错误不仅仅是跳过标志?好吧,我找到了你的规则不起作用的原因。我使用了mod_vhost_别名,因此DOCUMENT_ROOT没有更改为正确的值。有一个关于此的错误文件:。无论如何,你的答案最终是正确的。
RewriteCond %{DOCUMENT_ROOT}assets/img$1/.$2.$4/$3.$4 !-f
RewriteRule . - [S=2]
RewriteRule ^assets/img(.*)/([a-zA-Z0-9-_\.]*)\.([^/]+)\.([a-z]{2,4})$ assets/img$1/.$2.$4/$3.$4 [NC,QSA]
RewriteRule ^assets/img(.*)/([a-zA-Z0-9-_\.]*)\.([^/]+)\.([a-z]{2,4})$ assets/img/image.php?path=$1&file=$2.$4&key=$3 [NC,L,QSA]