还有一个mod_rewrite的问题

我试图让我的PHP项目之一运行mod_rewrite。 不幸的是,它不工作,我总是得到404错误。 我的url如下所示:
http://admin.domain.com/index.php?page=#1&action=#2
我想重写这个到上面的URL:
http://admin.domain.com/#1/#2/

有一些特殊情况,如没有动作或附加参数被指定。

这是我的虚拟主机configuration( 编辑 ):

 <VirtualHost *:*> ServerName admin.domain.com ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory "/var/www/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from All </Directory> ScriptAlias /awstats/ /usr/lib/cgi-bin/ Alias /awstats-icon/ /usr/share/awstats/icon/ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost> 

这是.htaccess内容(在/ var / www /)中:

 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/(.*)/$ index.php?page=$1&action=$2 [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ index.php?page=$1 [L,QSA] </IfModule> 

当请求/ home / asdf /或/ home /时,这里是错误日志输出:

 [Sat Jun 26 17:46:27 2010] [error] [client ..] File does not exist: /var/www/home [Sat Jun 26 17:47:09 2010] [error] [client ..] File does not exist: /var/www/home 

我不是很擅长正则expression式和mod_rewrite,但是看起来URL并没有被重写。

确保你已经启用了mod_rewrite

作为根:

 a2enmod rewrite 

然后,以root用户身份重新启动Apache2:

 /etc/init.d/apache2 restart 

要么

 /etc/init.d/httpd restart 

<Directory /var/www/>指令AllowOverride None无法防止使用htaccess文件。 您必须将其更改为AllowOverride FileInfo