Certifique-se de ter mod_rewrite ativado:
Como root:
a2enmod rewrite
Em seguida, reinicie o Apache2 como root:
/etc/init.d/apache2 restart
ou
/etc/init.d/httpd restart
Estou tentando obter o mod_rewrite em execução para um dos meus projetos PHP. Infelizmente não funciona, eu sempre recebo erros 404. Meus URLs são assim:
http://admin.domain.com/index.php?page=#1&action=#2
Gostaria de reescrever isso para o URL acima: http://admin.domain.com/#1/#2/
Existem alguns casos especiais, como quando não há ação ou parâmetros adicionais são especificados.
Aqui está minha configuração de virtualhost ( editada ):
<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>
Este é o conteúdo do .htaccess (em / 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>
E aqui está a saída do log de erros ao solicitar / home / asdf / ou / 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
Eu não sou muito bom em regex e mod_rewrite, mas parece que o URL não foi reescrito.
Em <Directory /var/www/>
, a diretiva AllowOverride None
impede que o arquivo htaccess seja usado. Você deve, por sua vez, alterá-lo para AllowOverride FileInfo
Tags mod-rewrite apache-2.2