我将重写规则放在目录标签中。在我问这个问题之前,我已经阅读了 Apache 文档的写法:
资源的网络路径
重写规则 ^/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。