我将重写规则放在目录标记中。 在我问这个问题之前,我已经阅读了Apache文档,其中写了:
资源的网络路径
RewriteRule ^ / foo $ / bar
如果DocumentRoot设置为/ usr / local / apache2 / htdocs,则此指令会将http://example.com/foo的请求映射到路径/ usr / local / apache2 / htdocs / bar。
所以我按照书面写的 在下面的例子中我想:/ aaaaa重定向到/index.php?action=aaaaa
<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。