Apache, .htaccess: FilesMatch matches URIs or real file names?

This is about Apache, and in particular .htaccess directives.

Let's suppose that /index.htm exists.

I want to have a whitelist of files allowed to be accessed (only .htm), so I've come up with this:

Order deny,allow
Deny from all
<FilesMatch "\.htm$">
  Allow from all
</FilesMatch>

What I see is that when requesting www.domain.com/index.htm all works fine, but when requesting just www.domain.com (empty URI) I get a 403 response (of course I should get the default index.htm instead).

After some testing I've discovered that it's because the empty string is not allowed by FilesMatch, so I'm wondering if I have understood well: [question #1a] can I say that FilesMatch matches the URI and not directly the real filename (the one in the filesystem)?

After this I have tried to rewrite the empty string with:

RewriteEngine on
RewriteRule ^$ index.htm [L]

with no luck, so [question #1b] can I say that FilesMatch denies access before any rewrite or am I doing something wrong?

In the end the only working solution I've come up with is including the empty string in FilesMatch's regexp:

<FilesMatch "(^|\.htm)$">

[question #2] Is this really the best, or even the only way to solve this problem? I can't find my solution around in the web, so I fear I'm doing something wrong from the very beginning...

Thank you!

How can I sort an Apache log file by date?

I have a a couple of Apache log files that have been appended together and I need to sort them by date. They're in the following format:

"www.company.com" 192.168.1.1 [01/Jan/2011:00:04:17 +0000] "GET /foobar/servlet/partner/search/results?catID=1158395&country=10190&id=5848716&order_by=N-T&order_by_dir=-&product=10361996&siteID=1169823&state= HTTP/1.1" 200 10459 0 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

What's the best way to go about doing this on the Linux command line?