url.rewrite-if-not-file - check for multiple files?
Added by Albright almost 15 years ago
I'm trying to create the analogue to this in a Lighty .conf file:
RewriteCond %{DOCUMENT_ROOT}/cache/normal/%{SERVER_NAME}%{REQUEST_URI}_%{QUERY_STRING}\.html -s RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}_%{QUERY_STRING}\.html [L,T=text/html] RewriteCond %{DOCUMENT_ROOT}/cache/normal/%{SERVER_NAME}%{REQUEST_URI}_%{QUERY_STRING}\.xml -s RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}_%{QUERY_STRING}\.xml [L,T=text/xml] RewriteCond %{DOCUMENT_ROOT}/cache/normal/%{SERVER_NAME}%{REQUEST_URI}_%{QUERY_STRING}\.json -s RewriteRule .* cache/normal/%{SERVER_NAME}%{REQUEST_URI}_%{QUERY_STRING}\.json [L,T=text/javascript]
So if http://example.com/foo is requested, this is basically saying…
- If cache/normal/example.com/foo_.html exists, serve it.
- If cache/normal/example.com/foo_.xml exists, serve it.
- If cache/normal/example.com/foo_.json exists, serve it.
However, with url.rewrite-if-not-file, it does not seem to be possible to check for the existence of more than one file. My approach so far has been:
$HTTP["host"] =~ "(.*)" { url.rewrite-if-not-file = ( "^/(?!\.(html|xml|json))(.*)" => "/cache/normal/%1/$1_.html", "^/cache/normal(.*)\.html$" => "/cache/normal$1.xml", "^/cache/normal(.*)\.xml$" => "/cache/normal$1.json" ) }(This ignores the query string part for the moment.) I was hoping this would have the same effect; however, the effect seems to be that only cache/normal/example.com/foo_.html is checked for. If that's not found, it doesn't check for cache/normal/example.com/foo_.xml and so on.
I tried using url.rewrite-repeat-if-not-file, but that doesn't check for the file existence between every rewrite either; the end result seems to be that only cache/normal/example.com/foo_.json is checked for (as the rewriting is happening on every step).
Is there a way to check for multiple files this way?
Yes, I know it can be done in Lua, and that's how we're currently doing it. I was hoping we could do it while ditching Lua, though, both for speed and for the ability to use more powerful RegEx than Lua's pattern matching supports.
(For the curious: I'm trying to enable the Boost module ( http://drupal.org/project/boost ) for the Drupal CMS. Here's how I did it in Lua: http://groups.drupal.org/node/22787 )