.htaccess 仅当HTTP请求存在时才将其重定向到文件
我正在尝试(内部)将一个调用重定向到.htaccess 仅当HTTP请求存在时才将其重定向到文件,.htaccess,mod-rewrite,apache2,.htaccess,Mod Rewrite,Apache2,我正在尝试(内部)将一个调用重定向到/server123/get_file.php?file=frame-38-227113.jpg到/server123/cache/2/2/7/227113/frame-38-227113.jpg 当然,只有在该文件确实存在的情况下。否则,它将需要通过get_file脚本来获取文件 但是我没有创建正确的重写规则 我现在所拥有的: RewriteEngine On RewriteCond %{REQUEST_URI} =/get_file.php Rewrit
/server123/get_file.php?file=frame-38-227113.jpg
到/server123/cache/2/2/7/227113/frame-38-227113.jpg
当然,只有在该文件确实存在的情况下。否则,它将需要通过get_file
脚本来获取文件
但是我没有创建正确的重写规则
我现在所拥有的:
RewriteEngine On
RewriteCond %{REQUEST_URI} =/get_file.php
RewriteRule ^.*$ /server063/get_file.php [L]
RewriteCond %{QUERY_STRING} file=(frame-[0-9]+-([0-9])([0-9])([0-9])[0-9]+.jpg)
RewriteCond %{REQUEST_URI} ^/(server[0-9]+)/get_file.php
RewriteCond %6/cache/%2/%3/%4/%1 -f
RewriteRule ^.*$ /$6/$5/cache/%2/%3/%4/%1 [L]
但这不起作用
我希望有人能给我一些启示
此外,在这里尝试防止无休止的循环时,我尝试使用了
IS_SUBREQ
,但这似乎没有什么作用(例如:它总是重新尝试循环)。我在您的规则中看到两个问题:
RewriteCond %{THE_REQUEST} ^GET\ /(server[0-9]+)/get_file\.php\?file=(frame-[0-9]+-(([0-9])([0-9])([0-9])[0-9]+).jpg)
RewriteCond %{DOCUMENT_ROOT}/%1/cache/%4/%5/%6/%3/%2 -f
RewriteRule . %1/cache/%4/%5/%6/%3/%2 [L]
注意:_请求不会被转义