Ainda outro problema de mod_rewrite

2

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.

    
por svens 26.06.2010 / 17:51

2 respostas

4

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
    
por 26.06.2010 / 18:32
2

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

    
por 26.06.2010 / 18:05