我试图让我的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