ディレクトリタグ内に書き換えルールを配置しました。質問をする前に、Apache のドキュメントを読んだことがあります。
リソースへの Web パス
RewriteRule ^/foo$ /bar
DocumentRoot が /usr/local/apache2/htdocs に設定されている場合、このディレクティブはhttp://example.com/fooの要求をパス /usr/local/apache2/htdocs/bar にマップします。
なので、書いてある通りにしました。
以下の例では、 /aaaaa を /index.php?action=aaaaaa にリダイレクトします。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName test.com
DocumentRoot /var/www/project/released/test
<Directory /var/www/project/released/test>
AllowOverride none
Options Indexes FollowSymLinks MultiViews
Order allow,deny
allow from all
RewriteEngine on
RewriteRule ^/([a-z0-9-_]+)$ /index.php?action=$1 [NC,L]
</Directory>
</VirtualHost>
Apacheログには次のように書かれています:
[Mon May 27 23:14:11 2013] [error] File does not exist: /var/www/project/released/test/aaaaa
これが機能しない理由と、ログがまったく異なる動作を示す理由を教えてください (ドキュメントによると、明らかにこのパスは存在しませんが、存在すべきではありません!)。mod_rewrite をインストールして有効にしました。